Python 错误非空约束失败:使用3个模型自定义表单django all auth(外键)

Python 错误非空约束失败:使用3个模型自定义表单django all auth(外键),python,django,django-models,django-forms,django-views,Python,Django,Django Models,Django Forms,Django Views,我正在学习django,在我的一个挑战中,我想在注册表单django all auth中添加3个外键,但我有一个错误:NOT NULL约束失败:advertising_profile.user_id 请你帮我解释一下我失败了什么 我正试图将此信息保存到注册表中 ==========views.py================== def register(request): form = CustomSignUpProfileModelForm() if reques

我正在学习django,在我的一个挑战中,我想在注册表单django all auth中添加3个外键,但我有一个错误:NOT NULL约束失败:advertising_profile.user_id 请你帮我解释一下我失败了什么

我正试图将此信息保存到注册表中

    ==========views.py==================
def register(request):
    form = CustomSignUpProfileModelForm()
    if request.method == "POST":
        form = CustomSignUpProfileModelForm(data=request.POST)
        if form.is_valid():
            #user = form['customSignUp'].save(commit=False)
            profile = form.save(commit=False)
            profile.user = request.user
            profile.save()

            #user = form.save()
            if profile is not None:
                do_login(request, user)
                return redirect('welcome')

    #form.fields['username'].help_text = None
    #form.fields['password1'].help_text = None
    #form.fields['password2'].help_text = None

    return render(request,"account/signup.html",{'form':form})

==========end views.py======================
=========forms.py======================
from django import forms
from django.forms import ModelForm
from betterforms.multiform import MultiModelForm
from django.contrib.auth.forms import UserCreationForm, AuthenticationForm
from django.contrib.auth.models import User
from .models import Profile, Region, Commune, Nation

class CustomSignUp(UserCreationForm):
    username = forms.EmailField(label="Correo electrónico")

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

class CustomSignIn(AuthenticationForm):
    username = forms.EmailField(label="Correo Electrónico")

    class Meta:
        model = User
        fields = ["username","password"]

class Profile(forms.ModelForm):

    class Meta:
        model = Profile
        fields = ["name","last_name","mother_last_name","phone","region","commune","nation"]

class Region(forms.ModelForm):

    class Meta:
        model = Region
        fields = ["name"]

class Commune(forms.ModelForm):

    class Meta:
        model = Commune
        fields = ["name"]

class Nation(forms.ModelForm):

    class Meta:
        model = Nation
        fields = ["name"]

class CustomSignUpProfileModelForm(MultiModelForm):
    form_classes = {
        'customSignUp': CustomSignUp,
        'profile':Profile,
    }
=============end forms.py =====================
============== models.py =====================
from django.db import models
from django.contrib.auth.models import User
from phone_field import PhoneField

# Create your models here.

class Region(models.Model):
    cprovin = models.CharField(max_length=4)
    name = models.CharField(max_length=50,verbose_name="Región")

    def __str__(self):
        return self.name

class Commune(models.Model):
    cpoblac = models.CharField(max_length=4)
    name = models.CharField(max_length=50, verbose_name="Comuna")
    region = models.ForeignKey(Region,on_delete=models.CASCADE, verbose_name="Elija una región",null=False, blank=False)

    def __str__(self):
        return self.name

class Nation(models.Model):
    name = models.CharField(max_length=50, verbose_name="Nacionalidad", null=False, blank=False)

    def __str__(self):
        return self.name

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE,null=False, blank=False)
    name = models.CharField(max_length=30, verbose_name="Nombre", null=False, blank=False)
    last_name = models.CharField(max_length=30, verbose_name="Apellido Paterno", null=False, blank=False)
    mother_last_name = models.CharField(max_length=30, verbose_name="Apellido Materno", null=False, blank=False)
    nation = models.ForeignKey(Nation,on_delete=models.CASCADE, verbose_name="Elija su nacionalidad", null=False, blank=False)
    region = models.ForeignKey(Region,on_delete=models.CASCADE,verbose_name="Elija una región", null=False, blank=False)
    commune = models.ForeignKey(Commune,on_delete=models.CASCADE,verbose_name="Elija una comuna", null=False, blank=False)
    phone = PhoneField(null=False, blank=False, unique=True, help_text="Número de contacto")

    def __str__(self):
        return self.name
============== end models.py =====================

在此行配置文件中。user=request.user但您应该确认您的模型在此行配置文件中应该有user

。user=request.user但您应该确认您的模型应该有user

,您是在什么时候首先遇到此错误的?我的意思是,在进行迁移或任何其他操作时,特别是在创建与概要文件模型的新关系时,我还删除了数据库和迁移,从头开始,错误会继续@Jai您是在什么时候第一次遇到这个错误的?我的意思是,在进行迁移或任何其他操作时,特别是在创建与概要文件模型的新关系时,我还删除了数据库和迁移,从头开始,错误会继续@贾伊