Django auto_now 与 auto_now_add

Bho*_*sun 5 django django-models

auto_now如果和被混淆就会遇到问题auto_now_add。如何做auto_nowauto_now_add工作?

auto_now:每次使用时都会创建时间models.save(),但models.create()如果使用则不起作用query.update(),它只更新一些数据,但不会自动更新日期

auto_now_addmodels.save():只有第一次使用或时才会创建时间models.create()

应该如何使用它们?

auto_now_add应该与 一起使用created_dateauto_now应该与 一起使用updated_date

created_date = models.DateTimeField(auto_now_add = True)
updated_date = models.DateTimeField(auto_now = True)
Run Code Online (Sandbox Code Playgroud)

小智 7

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

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

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

然而,这两者是互斥的,如auto_now 和 auto_now_add 之间的差异中所述- 因此不要创建模型字段并传递两个参数!

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