首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >IntegrityError at /new_topic/ NOT NULL约束失败: learning_logs_topic.owner_id

IntegrityError at /new_topic/ NOT NULL约束失败: learning_logs_topic.owner_id
EN

Stack Overflow用户
提问于 2019-01-08 11:56:33
回答 1查看 99关注 0票数 0

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

代码语言:javascript
运行
复制
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()更改为以下内容:

代码语言:javascript
运行
复制
    new_topic = form.save(commit=False)
    new_topic.owner = request.user
    new_topic.save()

我清理了所有带有.owner后缀的代码片段。我猜测这个问题是因为我将主题所有者作为User类的关键字,User类现在有一个topic属性(字段),该属性在默认情况下设置为Null = False,因此任何new_topic都应该有一个用户作为其所有者。下面是我所做的:

代码语言:javascript
运行
复制
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?或者我想知道我是否应该更改用户的主题字段而不是主题的所有者字段?如果是这样,我应该如何更改用户的默认字段?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-01-08 12:48:03

请在将用户更改为具有null=True后运行python manage.py makemigrationspython manage.py migrate

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/54085012

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档