Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/xamarin/3.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 /new\u topic/NOT NULL约束处的IntegrityError失败:正在学习\u日志\u topic.owner\u id_Python_Django - Fatal编程技术网

Python /new\u topic/NOT NULL约束处的IntegrityError失败:正在学习\u日志\u topic.owner\u id

Python /new\u topic/NOT NULL约束处的IntegrityError失败:正在学习\u日志\u topic.owner\u id,python,django,Python,Django,我正在将主题设置为有其用户所有者。但是我想知道我是否可以通过将Null=True设置为某个字段来添加一个没有所有者的新主题 class Topic(models.Model): text = models.CharField(max_length=200) date_added = models.DateTimeField(auto_now_add=True) owner = models.ForeignKey(User, on_delete=models.CASCADE

我正在将主题设置为有其用户所有者。但是我想知道我是否可以通过将Null=True设置为某个字段来添加一个没有所有者的新主题

class Topic(models.Model):
    text = models.CharField(max_length=200)
    date_added = models.DateTimeField(auto_now_add=True)
    owner = models.ForeignKey(User, on_delete=models.CASCADE)

    def __str__(self):           
        return self.text



@login_required
def new_topic(request):
    if request.method != 'POST':
        form = TopicForm()
    else:
        form = TopicForm(request.POST)
        if form.is_valid():
            form.save()
错误为:NOTNULL约束失败。通过将新主题设置为所有者,将form.save()更改为以下内容,我知道了解决方案:

    new_topic = form.save(commit=False)
    new_topic.owner = request.user
    new_topic.save()
我清理了所有后缀为.owner的代码片段。我猜问题是因为当我用User类Forignkey topic owner时,User类现在有一个topic属性(field),默认设置为Null=False,因此任何新的主题都应该有一个用户作为其所有者。以下是我所做的:

class Topic(models.Model):
    text = models.CharField(max_length=200)
    date_added = models.DateTimeField(auto_now_add=True)
    owner = models.ForeignKey(User, on_delete=models.CASCADE, null=True)

    def __str__(self):           
        return self.text

然而,我仍然得到同样的错误。。我猜是因为ForeignKey字段不支持Null=True?或者我想知道是否应该更改用户的主题字段而不是主题的所有者字段?如果是,我应该如何更改用户的默认字段?谢谢大家!

在您将用户更改为具有
null=True
后,请运行
python manage.py makemigrations
python manage.py migrations
python manage.py migrate
将用户更改为具有
null=True
后,您是否运行了
python manage.py makemigrations
!我忘了这个!我已经将其发布为answer.plus,如果您希望它像在序列化程序上一样在python级别抛出错误,请使用blank=True,null=True