только одна модель для аутентификации
пусть это будет User(AbstractUser)
и пусть будут Boss(models.Model) и Employee(models.Model)
с отношениями: user = OneToOneField(User)
тогда формы будут такие:
BossSignUpForm(UserCreationForm)
EmployeeSignUpForm(UserCreationForm)
в каждой из них class Meta(UserCreationForm.Meta): class = User
при регистрации человек выбрирает категорию и регистрируется каждый в своей форме
это все сохраняется только в модели(таблице) User
я открываю shell и пробую создать в таблице Boss нового юзера
>>> from users.models import User, Boss, Employee
>>> from users.forms import UserForm, BossSignUpForm
>>> u5 = {'username': 'u5', 'email': 'u5@u.ru', 'password1':'u5555555', 'password2':'u5555555'}
>>> b = BossSignUpForm(u5)
>>> b.is_valid()
True
>>> b.cleaned_data
{'username': 'u5', 'email': 'u5@u.ru', 'password1': 'u5555555', 'password2': 'u5555555'}
>>> b.save()
<User: u5>
>>> b = User.objects.get(username='u5')
>>> b
<User: u5>
>>> l = Boss.objects.create(user=b)
AttributeError: 'Boss' object has no attribute 'username'
username attribute есть в модели User
Boss model имеет только OneToOneField(User)
как мне добавить новый экземпляр боса,
чтобы это отражалось в таблицe Boss и в admin?
или я могу выложить код на pastbin, если нужно
почему .create? .add
хотя нет, с о2о просто нужно поле указать
>>> l = Boss.objects.create(user=b) Здесь я через поле user пытаюсь это сделать. Поле юзер это как раз о2о
так ты create пишешь, то есть пытаешься не изменить поле у существующего, а создать нового
update? get_or_create ещё вижу
нет, просто сначала получить инстанс конкретного босса, например через гет, а потом его полю присвоить значение юзера
но вообще смущает что у тебя поля формы босса дублируют поля юзера, так быть не должно
Совсем нет, никаких лишних полей. Я сейчас покажу на pestbin модели, там дубляж отсутствует
Обсуждают сегодня