我有以下型号:
class MetaData(models.Model):
created_at = models.DateTimeField(auto_now_add=True, auto_now=False)
created_by = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True,
related_name='%(app_label)s_%(class)s_created_by')
updated_at = models.DateTimeField(auto_now_add=False, auto_now=True)
updated_by = models.ForeignKey(settings.AUTH_USER_MODEL, blank=True, null=True,
related_name='%(app_label)s_%(class)s_updated_by')
update_at 字段也在创建时以一个值完成,而不是为空。我希望只有在第一次保存/创建之后才会有一个值。
我做错了吗?
最佳答案
在 Django 中,您有 auto_now
和 auto_now_add
两者都有。
来自文档:
DateField.auto_now
Automatically set the field to now every time the object is saved. (which means when it is first created too)
DateField.auto_now_add
Automatically set the field to now when the object is first created.
编辑:
如果您希望在第一次创建对象时 updated_at
字段为 null
,您只需将 null=True
与 auto_now=True
到 DateTimeField
:
class MetaData(models.Model):
# ...
updated_at = models.DateTimeField(auto_now=True, null=True)
# ...
关于Django auto_now 行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45841270/