gpt4 book ai didi

Django: "created_at"列中的空值违反了非空约束

转载 作者:行者123 更新时间:2023-12-01 23:38:06 25 4
gpt4 key购买 nike

我正在尝试通过以下代码添加记录:

  Post.objects.update_or_create(
user=user,
defaults={
"title": external_post.get('title'),
"body": external_post.get('body'),
"seo": external_post.get('seo')
}
)

我已经成功迁移了模型,但出现错误“列“created_at”中的空值违反了非空约束”。
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)

最佳答案

我在使用 @transaction atomic 时遇到了同样的问题Django 中的装饰器。基本上我遇到同样错误的原因是我没有在我的一个模型中使用默认的自动增量 ID,而是我使用 primary_key=True 指定了一个特定字段作为主键。

结果,我的数据包含两个相同的主键。这导致了数据库中的“更新”操作而不是“创建”操作。

所以,Django 试图更新一个条目,但 created_at字段丢失,因此出现错误。

我建议你这样做:

post,created = Post.objects.update_or_create(
user=user,
defaults={
"title": external_post.get('title'),
"body": external_post.get('body'),
"seo": external_post.get('seo')
})
if created:
# your code goes here
#(this ensures that the code is executed only if an entry is getting created in the database)

您可以阅读本文以获得更好的解释: https://code.djangoproject.com/ticket/17654

关于Django: "created_at"列中的空值违反了非空约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49137484/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com