Как создать объект модели выбранного типа пользователя в форме регистрации
как создать объект модели выбранного типа пользователя в форме регистрации? что я хочу, если выбранный тип пользователя является студентом, то я хочу автоматически создать его в модели студента после регистрации, а не только в модели пользователя. как этого добиться?
models.py
class User(AbstractUser):
is_admin = models.BooleanField('Is admin', default=False)
is_teacher = models.BooleanField('Is teacher', default=False)
is_student = models.BooleanField('Is student', default=False)
class Student(models.Model):
GENDER = (
('1', 'Male'),
('2', 'Female')
)
STATUS = (
('1', 'Ongoing'),
('2', 'On Probition'),
('3', 'NA')
)
name = models.OneToOneField(
User, on_delete=models.CASCADE, primary_key=True)
id_number = models.IntegerField()
gender = models.CharField(
max_length=10, choices=GENDER, blank=True, null=True)
date_of_birth = models.CharField(max_length=20, blank=True, null=True)
course = models.ForeignKey(
Course, on_delete=models.CASCADE, blank=True, null=True)
year_level = models.IntegerField()
status = models.CharField(max_length=10, choices=STATUS, default='3')
def __str__(self):
return str(self.name)
class Teacher(models.Model):
name = models.OneToOneField(
User, on_delete=models.CASCADE, primary_key=True)
def __str__(self):
return str(self.name)
forms.py
class SignUpForm(UserCreationForm):
username = forms.CharField(
widget=forms.TextInput(
attrs={
"class": "form-control"
}
)
)
password1 = forms.CharField(
widget=forms.PasswordInput(
attrs={
"class": "form-control"
}
)
)
password2 = forms.CharField(
widget=forms.PasswordInput(
attrs={
"class": "form-control"
}
)
)
email = forms.CharField(
widget=forms.TextInput(
attrs={
"class": "form-control"
}
)
)
class Meta:
model = User
# model = Profile
fields = ('username', 'email', 'password1', 'password2',
'is_admin', 'is_teacher', 'is_student')
Я думаю, что логика должна быть добавлена здесь в views.py, но я не знаю, как это сделать.
views.py
def register(request):
msg = None
if request.method == 'POST':
form = SignUpForm(request.POST)
if form.is_valid():
user = form.save()
msg = 'user created'
return redirect('login_view')
else:
msg = 'form is not valid'
else:
form = SignUpForm()
return render(request, 'register/register.html', {'form': form, 'msg': msg})