Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何修复django中的无空约束_Python_Django - Fatal编程技术网

Python 如何修复django中的无空约束

Python 如何修复django中的无空约束,python,django,Python,Django,我使用OneToOne关系创建一个用户,当我在表单中输入数据并提交它时,我没有得到空约束错误 view.py form.py models.py 您的UserProfile模型需要工资,但您的表单只有一个位置字段。因此,当您的表单随位置一起提交时,它是有效的,但无法保存基础模型,因为薪资将为零 将“薪资”字段添加到表单中,或使“薪资”字段为空 此外,您需要在保存配置文件之前分配用户字段,因为这也是不可为空的。一种方法是: user = form.save() # this is the Use

我使用OneToOne关系创建一个用户,当我在表单中输入数据并提交它时,我没有得到空约束错误

view.py

form.py

models.py

您的UserProfile模型需要工资,但您的表单只有一个位置字段。因此,当您的表单随位置一起提交时,它是有效的,但无法保存基础模型,因为薪资将为零

将“薪资”字段添加到表单中,或使“薪资”字段为空

此外,您需要在保存配置文件之前分配用户字段,因为这也是不可为空的。一种方法是:

user = form.save()  # this is the UserForm so when saving it returns the user
profile = form_class.save(commit=False)
profile.user = user
profile.save()

我建议您仔细阅读上的Django文档。特别是上的部分将解释如何正确处理这些情况。

您应该向我们展示整个错误跟踪。顺便说一句,这样可以更容易地确定确切的错误是什么以及发生在哪里。@dirkgrotenception Type:IntegrityError异常值:NOT NULL约束失败:try1_userprofile.user_id@dirkgroten 异常类型:IntegrityError异常值:非空约束失败:try1\u userprofile.user\u id
class Registerform(UserCreationForm):
    class Meta:
        model=User
        fields= ['username','first_name','last_name','password1','password2']

    def save(self, commit=True):
        user=super(Registerform, self).save(commit=False)
        user.first_name=self.cleaned_data['first_name']
        user.last_name = self.cleaned_data['last_name']

        if commit:
            user.save()
        return user


class ProfileForm(forms.ModelForm):
    class Meta:
        model = UserProfile
        fields = [ 'location']
class UserProfile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    description = models.TextField(max_length=500, blank=True)
    location = models.CharField(max_length=30, blank=True)
    birth_date = models.DateField(null=True, blank=True)
    salary=models.CharField(max_length=120)

    def __str__(self):
        return self.location
user = form.save()  # this is the UserForm so when saving it returns the user
profile = form_class.save(commit=False)
profile.user = user
profile.save()