Как устранить ошибку целостности в моем Django проекте - PullRequest
0 голосов
/ 05 февраля 2020

У меня есть форма, которую администратор использует для регистрации ученика при входе на сайт. Я расширил модель 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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...