IntegrityError at /signup/ UNIQUE constraint failed: accountss_doctor.user_id
Я пытаюсь зарегистрироваться как Доктор, но у меня возникла следующая проблема .
raise dj_exc_value.with_traceback(traceback) from exc_value
File "C:\Users\rachi\AppData\Local\Programs\Python\Python310-32\lib\site-packages\django\db\backends\utils.py", line 89, in _execute
return self.cursor.execute(sql, params)
File "C:\Users\rachi\AppData\Local\Programs\Python\Python310-32\lib\site-packages\django\db\backends\sqlite3\base.py", line 477, in execute
return Database.Cursor.execute(self, query, params)
django.db.utils.IntegrityError: UNIQUE constraint failed: accountss_doctor.user_id
вот мой models.py
class User(AbstractUser):
is_doctor = models.BooleanField(default=False)
is_patient = models.BooleanField(default=False)
class Doctor(models.Model):
user = models.OneToOneField(
User, on_delete=models.CASCADE, primary_key=True)
number_phone = models.CharField(
_('االهاتف :'), max_length=50, blank=True, null=True)
last_login = models.DateTimeField(auto_now_add=True)
name = models.CharField(_('الاسم :'), max_length=50)
surname = models.CharField(_(' اللقب :'), max_length=50)
subtitle = models.CharField(_('نبدة عنك :'), max_length=50)
address = models.CharField(_("المحافضة :"), max_length=50)
вот мой views.py
class DoctorSignupForms(UserCreationForm):
username = forms.CharField(label="الاسم")
first_name = forms.CharField(label="الاسم الاول")
last_name = forms.CharField(label=" الاسم الاخير")
number_phone = forms.CharField(label=" الهاتف")
email = forms.EmailField(label="البريد الالكتروني")
password1 = forms.CharField(
label=" كلمة المرور", widget=forms.PasswordInput(), min_length=8)
password2 = forms.CharField(
label="تاكيد كلمة المرور", widget=forms.PasswordInput(), min_length=8)
class Meta(UserCreationForm.Meta):
model = User
fields = ('username', 'first_name', 'last_name',
'email', 'password1', 'password2', 'number_phone')
@transaction.atomic
def save(self):
user = super().save(commit=False)
user.email = self.cleaned_data.get('email')
user.is_doctor = True
user.save()
doctor = Doctor.objects.create(user=user)
doctor.username = self.cleaned_data.get('username')
doctor.number_phone = self.cleaned_data.get('number_phone')
doctor.save()
return doctor
Я слышал, что это из-за отношения, которое должно быть foreinkey, а не один к одному, но я хочу, чтобы у каждого врача был один профиль