是否启用了auto_now_add选项的DateTimeField必须在fixture中具有值

ker*_*ram 10 django django-models django-fixtures

我有模型创建的字段可配置如下:

created = models.DateTimeField(auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)

在JSON fixture中我不想为create创建值,但是当我尝试加载fixture(loadata)时,我收到错误:

created可能不是NULL

所以我必须在灯具中提供创造价值或者还有其他方法吗?

obu*_*jin -3

尝试

import datetime
created = models.DateTimeField(default=datetime.datetime.now)
Run Code Online (Sandbox Code Playgroud)

关于为什么会发生这种情况,你可以在这里阅读:Django auto_now 和 auto_now_addDjango model field default

  • 这是一个糟糕的建议。datetime.datetime.now() 将在加载模型时进行评估。基本上,此创建字段的默认日期时间将是服务器上次启动的时间。编辑:这就是 oburejin 真正想要的。创建 = models.DateTimeField(default=datetime.datetime.now) (默认采用可调用对象,用于在实际实例化时间调用。请参阅:https://docs.djangoproject.com/en/dev/ref/models/fields/ #默认) (12认同)