作者:平凡无求 | 来源:互联网 | 2022-12-10 13:20
我在Django
模型字段的属性中了解的是
auto_now
-每次调用Model.save()时,将字段的值更新为当前时间和日期。
auto_now_add
-用创建记录的时间和日期更新值。
我的问题是,如果模型中的文件同时包含auto_now
和auto_now_add
设置为True,该怎么办?在这种情况下会发生什么?
1> awesoon..:
auto_now
优先(显然,因为它每次都更新字段,而auto_now_add
仅在创建时更新)。这是DateField.pre_save
方法的代码:
def pre_save(self, model_instance, add):
if self.auto_now or (self.auto_now_add and add):
value = datetime.date.today()
setattr(model_instance, self.attname, value)
return value
else:
return super().pre_save(model_instance, add)
如您所见,如果auto_now
设置了或同时auto_now_add
设置了两者和对象是新对象,则该字段将接收当前日期。
相同的DateTimeField.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().pre_save(model_instance, add)