我在django 2.2中遇到错误,即NOT NULL约束失败:home_profile.user_id

时间:2019-07-31 07:22:24

标签: django

我正在仅为经过身份验证的用户创建一个编辑配置文件表单。该用户已通过身份验证,但在完成编辑配置文件表单时会出现错误,即“ NOT NULL约束失败:home_profile.user_id”

删除迁移并重新迁移

if request.method=="POST":
    firstname = request.POST.get('firstname')
    middlename = request.POST.get('middlename')
    lastname = request.POST.get('lastname') 
    bloodGroup = request.POST.get('bloodGroup')

    professionalStatus = request.POST.get('professionalStatus')
    image = request.POST.get('image')
    prof_update = Profile(firstname=firstname,
                        lastname=lastname,
                        middlename=middlename,
                        bloodGroup=bloodGroup,
                    )
    prof_update.save()

已保存表单

1 个答案:

答案 0 :(得分:0)

执行此操作时:

prof_update = Profile(firstname=firstname,
                      lastname=lastname,
                      middlename=middlename,
                      bloodGroup=bloodGroup, )

您正在尝试创建新的个人资料,但可能用户不见了。

您应该将代码更改为:

class Profile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    # ...
    # other fields come here
    # ...

# later on when you need to create a new `Profile`:
user = User.objects.create_user(username=username, email=email,
                                password=password1,
                                first_name=first_name,
                                last_name=last_name)
user.is_active = True
user.save()

p = Profile.objects.create(user=user,
                           # add other custom fields here,
                           )
p.save()  # not necessary if I remember