gpt4 book ai didi

python - auto_now 和 auto_now_add 之间的区别

转载 作者:太空狗 更新时间:2023-10-29 23:56:47 26 4
gpt4 key购买 nike

我在Django 模型字段的属性中理解的是

  • auto_now - 每次调用 Model.save() 时将字段值更新为当前时间和日期。
  • auto_now_add - 使用创建记录的时间和日期更新值。

我的问题是,如果模型中的一个字段同时包含设置为 True 的 auto_nowauto_now_add 怎么办?在那种情况下会发生什么?

最佳答案

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)

关于python - auto_now 和 auto_now_add 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51389042/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com