【Django|orm】auto_now=True,auto_now_add=True的区别
在 Django 的模型字段中,auto_now=True 和 auto_now_add=True 是用来自动处理日期时间字段的选项,它们有不同的用途:
auto_now=True
- 每次保存对象时,都会将当前日期和时间自动保存到字段中。
- 主要用于需要记录“最后一次修改时间”的字段。
- 适用场景:记录对象最后一次更新的时间戳,比如日志的更新时间字段。
updated_at = models.DateTimeField(auto_now=True)
效果:每次调用 .save() 方法,无论是否有字段变化,updated_at 都会更新为当前时间。
auto_now_add=True
- 在对象第一次被创建时,会将当前日期和时间自动保存到字段中,以后不会更新。
- 主要用于记录“对象创建时间”的字段。
- 适用场景:记录对象的创建时间,比如用户注册时间、文章发表时间。
created_at = models.DateTimeField(auto_now_add=True)
效果:只在对象初次保存时设置时间,以后不会更改。
总结区别:
auto_now:每次保存都会更新为当前时间,表示“最后修改时间”。auto_now_add:只在对象创建时设置一次,表示“创建时间”。
注意:两者不能同时用在同一个字段上,否则会报错。