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

时间:2012-07-15 19:36:14

标签: django django-models django-fixtures

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

created = models.DateTimeField(auto_now_add=True)

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

  

创建的可能不是NULL

所以我必须在灯具中提供创造的价值,还是有其他方式?

2 个答案:

答案 0 :(得分:0)

尝试

import datetime
created = models.DateTimeField(default=datetime.datetime.now)

关于为什么会发生这种情况,您可以在此处阅读:Django auto_now and auto_now_addDjango model field default

答案 1 :(得分:0)

您可以使用pre_save信号来处理loaddata(夹具)

def pre_save_for_conference_code_fixture(sender, instance, **kwargs):
  if kwargs['raw']:
    instance.updated_at = timezone.now()
      if not instance.id:
        instance.created_at = timezone.now()

https://docs.djangoproject.com/en/3.1/ref/django-admin/#django-admin-loaddata