/ new_topic / NOT NULL约束处的IntegrityError失败:learning_logs_topic.owner_id

时间:2019-01-08 03:56:33

标签: python django

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

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()

错误说:Not NULL约束失败。我通过将new_topic设置为所有者来将form.save()更改为以下内容,从而知道了解决方案:

    new_topic = form.save(commit=False)
    new_topic.owner = request.user
    new_topic.save()

我清除了所有带有.owner后缀的代码段。我猜是问题所在,因为当我与用户类一起使用Forignkey主题所有者时,该用户类现在具有一个主题属性(字段),默认情况下将Null = False设置为所以所有new_topic都应将用户作为其所有者。这是我所做的:

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?还是我想更改用户的主题字段而不是主题的所有者字段?如果是这样,如何更改用户的默认字段?谢谢!

1 个答案:

答案 0 :(得分:1)

将用户更改为python manage.py makemigrations后,请运行python manage.py migratenull=True