Сбой ограничения NOT NULL: users_details.user_id - PullRequest
0 голосов
/ 06 февраля 2020

Я попытался добавить другую форму с указанием адреса и даты рождения на странице формы регистрации. Каждый раз, когда я пытался зарегистрироваться, я получаю сообщение об ошибке ограничения NOT NULL.

models.py

class Details(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    address = models.CharField(max_length=60, blank=True)
    birth_date = models.DateField(null=True, blank=True)

views.py

def register(request):
    if request.method == 'POST':
        r_form = UserRegisterForm(request.POST)
        o_form = DetailsForm(request.POST)
        if r_form.is_valid and o_form.is_valid():
            r_form.save()
            o_form.save()
            username = r_form.cleaned_data.get('username')
            messages.success(request, f'Your account has been created!')
            return redirect('login')
    else:
        r_form = UserRegisterForm()
        o_form = DetailsForm()

    context = {
        'r_form' : r_form,
        'o_form' : o_form
    }
    return render(request, 'users/register.html', context)

forms.py

class UserRegisterForm(UserCreationForm):
    email = forms.EmailField()

    class Meta:
        model = User
        fields = ['username', 'email','password1', 'password2']

class DetailsForm(forms.ModelForm):
    address = forms.CharField()
    birth_date = forms.DateField()
    class Meta:
        model = Details
        fields = ['address', 'birth_date']

ОШИБКА

1 Ответ

0 голосов
/ 06 февраля 2020

Несмотря на то, что посторонние детали / модели «коляска» не являются наилучшей практикой, поскольку появились подключаемые пользовательские модели, эта конкретная проблема вызвана тем, что две модели не связаны.

Попробуйте

if r_form.is_valid and o_form.is_valid():
    user = r_form.save()
    o_form.instance.user = user
    o_form.save()
...