У меня есть форма, которую администратор использует для регистрации ученика при входе на сайт. Я расширил модель Django User, чтобы учесть такие вещи, как пол, телефон, profile_pi c, время. Каждый раз, когда я заполняю поля, я получаю эту ошибку Неудачное ограничение UNIQUE: backend_extenduser.user_id в браузере, когда я прокручиваю немного вниз, я вижу это Вышеприведенное исключение (ограничение UNIQUE не удалось: backend_extenduser.user_id ) была ли прямая причина следующего исключения Я хочу знать, что является причиной этого? И как я могу решить эту проблему, у меня есть другой проект с той же кодовой базой, этот проект работает нормально, но этот самый проект, над которым я работаю, выдает ошибку. Ниже приведены мои коды
на models.py
class ExtendUser(models.Model):
MALE = 'ML'
FEMALE = 'FM'
GENDER = [
(MALE, 'Male'),
(FEMALE, 'Female'),
]
user = models.OneToOneField(User, on_delete=models.CASCADE)
phone = models.CharField(max_length=15)
profile_pic = models.ImageField(verbose_name='Profile Picture', blank=True, null=True, upload_to='backend_uploads')
gender = models.CharField(max_length=2, choices=GENDER, default=MALE, blank=False, null=True)
time = models.DateTimeField(default=timezone.now)
def __str__(self):
return self.user.username
Я хочу уменьшить файл forms.py, чтобы показывать только код, который я добавляю в дополнительное поле Django Модель пользователя
class ExtendUserForm(forms.ModelForm):
class Meta():
MALE = 'ML'
FEMALE = 'FM'
GENDER = [
(MALE, 'Male'),
(FEMALE, 'Female'),
]
model = ExtendUser
exclude = ('time', 'user')
widgets = {
'phone':forms.TextInput(attrs={'class':'form-control'}),
'gender':forms.RadioSelect(choices=GENDER),
'profile_pic':forms.ClearableFileInput()
}
На моем views.py У меня есть код ниже, вы можете увидеть на код ниже, я импортировал Register () класс, который был создан на forms.py . Я пытаюсь не показывать весь код, чтобы он не был слишком громоздким
def register(request):
if request.method == 'POST':
register_form = Register(request.POST)
extend_form = ExtendUserForm(request.POST, request.FILES)
if register_form.is_valid() and extend_form.is_valid():
form1 = register_form.save()
form2 = extend_form.save(commit=False)
form2.user = form1
extend_form.save()
messages.success(request, 'Student have been registered successfully')
else:
register_form = Register()
extend_form = ExtendUserForm(request.POST, request.FILES)
return render(request, 'backend/add-student.html', {'reg':register_form, 'ext':extend_form})
на моем шаблоне
<form method="post" class="form" enctype="multipart/form-data">
{{ reg }}
{{ ext }}
{% csrf_token %}
<input type="submit" class="btn btn-success btn-block" value="Add Student">
</form>