В Django есть стандартные средства создания пользователя, я раньше использовал
такой прием
class SignUp(generic.CreateView):
form_class = UserCreationForm
success_url = reverse_lazy('login')
template_name = 'signup.html'
Но в текущем проекте не сам пользователь создает себе логин-пароль, а "старший по званию"
например директор создает логин учителю и тьютору, а тьютор родителю и ученику.
Тип пользователя хранится в Profile
При создании логина появляется дополнительный выбор, он зависит о того кто создает, например тьютор может при создании выбрать между родителем и учеником.
Я попытался расширить форму и реализовать дополнительное поле вот так
class SignUpFormTut(UserCreationForm):
role = forms.ChoiceField(
choices = (
('P','Родитель'),
('S','Ученик'),
)
)
class SignUpTut(generic.CreateView):
form_class = SignUpFormTut
success_url = reverse_lazy('login')
template_name = 'signup.html'
поле появляется в форме но как использовать значение?
Была идея вставить код в сигнальную функцию, вот эту
но пока не работает
@receiver(post_save, sender=User)
def create_user_profile(sender, instance, created, **kwargs):
if created:
Profile.objects.create(user=instance)