Для создания общего пользователя для разных контрагентов в Django вы можете использовать модель доступа на основе ролей, а также методы аутентификации и авторизации Django.
Ваша модель "Пользователь" должна содержать поля, такие как имя пользователя, пароль и электронная почта. Также создайте модель "Контрагент", которая будет содержать дополнительную информацию о каждом контрагенте, например, название и адрес.
Далее, вы можете создать отношение между моделями "Пользователь" и "Контрагент" с использованием поля ForeignKey. Это позволит каждому пользователю иметь доступ к связанному контрагенту.
from django.db import models from django.contrib.auth.models import AbstractUser class User(AbstractUser): pass class Contractor(models.Model): name = models.CharField(max_length=100) address = models.CharField(max_length=200) user = models.ForeignKey(User, on_delete=models.CASCADE)
Теперь, когда у вас есть модели, вы можете предоставить возможность пользователю выбрать контрагента и связать его с его учетной записью. Например, вы можете создать форму регистрации, где пользователь может указать информацию о себе и выбрать связанного контрагента:
from django import forms class RegistrationForm(forms.ModelForm): class Meta: model = User fields = ['username', 'password', 'email'] contractor = forms.ModelChoiceField(queryset=Contractor.objects.all())
Теперь, когда пользователь регистрируется и выбирает контрагента, вы можете создать запись в модели "Контрагент" и связать ее с созданной учетной записью пользователя:
def register(request): if request.method == 'POST': form = RegistrationForm(request.POST) if form.is_valid(): user = form.save(commit=False) user.set_password(form.cleaned_data['password']) user.save() contractor = form.cleaned_data['contractor'] Contractor.objects.create(name=contractor.name, address=contractor.address, user=user) return HttpResponseRedirect('success/') else: form = RegistrationForm() return render(request, 'registration.html', {'form': form})
Теперь у вас есть общий пользователь, который связан с разными контрагентами. Вы можете использовать методы аутентификации и авторизации Django, такие как login и logout, для управления аутентификацией этих пользователей.
Важно помнить, что безопасность является важным аспектом при разработке аутентификации и авторизации. Убедитесь, что ваши формы проверяются и валидируются перед сохранением их в базу данных для предотвращения уязвимостей. Также рекомендуется использовать хэширование паролей для сохранения безопасности пользователей.