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

时间:2018-03-06 18:17:12

标签: django django-models

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

  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) 

1 个答案:

答案 0 :(得分:2)

在Django中使用?- Val1 in 1..2, Val2 in 3..10, testing([A,B], [A+1,B+A], [Val1,Val2], Result), evaluate(Result, R). 装饰器时,我遇到了同样的问题。基本上,我遇到相同错误的原因是我没有在其中一个模型中使用默认的自动增量ID,而是使用@transaction atomic

指定了一个特定字段作为主键。

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

因此,Django尝试更新条目,但缺少primary_key=True字段,因此出错。

我建议您改为这样做:

created_at

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