Django auto_now 与 auto_now_add
Posted
技术标签:
【中文标题】Django auto_now 与 auto_now_add【英文标题】:Django auto_now vs auto_now_add 【发布时间】:2021-04-20 02:28:19 【问题描述】:如果auto_now
和auto_now_add
混淆,则会遇到问题。 auto_now
或 auto_now_add
是如何工作的?
auto_now
: 每次使用models.save()
或models.create()
时都会创建时间,但如果使用query.update()
则不起作用,它只会更新一些数据但不会自动更新日期
auto_now_add
: 只有第一次使用models.save()
或models.create()
时才会创建时间
它们应该如何使用?
auto_now_add
应与created_date
一起使用,auto_now
应与updated_date
一起使用
created_date = models.DateTimeField(auto_now_add = True)
updated_date = models.DateTimeField(auto_now = True)
【问题讨论】:
请帮助检查这里的答案:***.com/questions/51389042/… 这似乎不是一个问题。我试图让英语更符合语法,但这似乎是一个自我回答的问题。 【参考方案1】:回答您的问题:如何最好地使用auto_now_add
与auto_now
? - 您将它们与 DateTimeField 或 DateField 一起使用的想法是完全正确的!
auto_now_add
非常适合一次性修改模型上的字段,仅在第一次创建和保存模型实例时。正如您所指出的,这对于 created_at
或 timestamp
字段来说非常棒,永远不需要再次更改。
auto_now
非常棒,每当您需要更改字段时,只要在模型实例上调用 .save() 方法即可。正如您所提到的,updated_at
将是一个很好的机会。
然而,这 2 个是互斥的,正如 Difference between auto_now and auto_now_add 中所述 - 所以不要创建模型字段并传递两个参数!
你的假设是正确的;只是想确认一下:)
【讨论】:
以上是关于Django auto_now 与 auto_now_add的主要内容,如果未能解决你的问题,请参考以下文章
django1.5.4数据库,auto_now时间不能自动更新
django model:auto_now_add 和 auto_now