【问题标题】:Django auto_now vs auto_now_addDjango auto_now 与 auto_now_add
【发布时间】:2021-04-20 02:28:19
【问题描述】:

如果auto_nowauto_now_add 混淆,则会遇到问题。 auto_nowauto_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)

【问题讨论】:

标签: django django-models


【解决方案1】:

回答您的问题:如何最好地使用auto_now_addauto_now? - 您将它们与 DateTimeField 或 DateField 一起使用的想法是完全正确的!

auto_now_add 非常适合一次性修改模型上的字段,在第一次创建和保存模型实例时。正如您所指出的,这对于 created_attimestamp 字段来说非常棒,永远不需要再次更改。

auto_now 非常棒,每当您需要更改字段时,只要在模型实例上调用 .save() 方法即可。正如您所提到的,updated_at 将是一个很好的机会。

然而,这 2 个是互斥的,正如 Difference between auto_now and auto_now_add 中所述 - 所以不要创建模型字段并传递两个参数!

你的假设是正确的;只是想确认一下:)

【讨论】:

    猜你喜欢
    • 2010-12-16
    • 2011-11-21
    • 2013-02-14
    • 1970-01-01
    • 2018-12-25
    • 1970-01-01
    • 2018-02-01
    • 1970-01-01
    • 2011-08-19
    相关资源
    最近更新 更多