wow*_*in2 10 python django django-models django-database
auto_now_addDjango 中模型的和timezone.now(作为默认值)有什么区别?例子:
create_date = models.DateTimeField(auto_now_add=True)
Run Code Online (Sandbox Code Playgroud)
和
create_date = models.DateTimeField(default=timezone.now)
Run Code Online (Sandbox Code Playgroud)
?
UPD。我说的是我总是不覆盖默认值的情况。
小智 11
default当保存实例时没有字段值时提供默认值,但仍然意味着该字段是用户可编辑的,因此有人可以输入该字段的值。
auto_now并auto_now_add暗示该字段不可由用户编辑,并且必须始终设置为此值。
有人在 reddit 上发布了这个。
看起来 Djangotimezone.now() 在底层做了同样的事情,在pre_save:
def pre_save(self, model_instance, add):
if self.auto_now or (self.auto_now_add and add):
value = timezone.now()
setattr(model_instance, self.attname, value)
return value
else:
return super(DateTimeField, self).pre_save(model_instance, add)
Run Code Online (Sandbox Code Playgroud)
唯一的区别是 python 调用的时刻timezone.now(),但这应该是纳秒级的差异。
| 归档时间: |
|
| 查看次数: |
3117 次 |
| 最近记录: |