chan

朝生暮死不足笑 但悲百年不足道

【Django|orm】auto_now=True,auto_now_add=True的区别


在 Django 的模型字段中,auto_now=Trueauto_now_add=True 是用来自动处理日期时间字段的选项,它们有不同的用途:

  1. auto_now=True
  • 每次保存对象时,都会将当前日期和时间自动保存到字段中。
  • 主要用于需要记录“最后一次修改时间”的字段。
  • 适用场景:记录对象最后一次更新的时间戳,比如日志的更新时间字段。
   updated_at = models.DateTimeField(auto_now=True)

效果:每次调用 .save() 方法,无论是否有字段变化,updated_at 都会更新为当前时间。

  1. auto_now_add=True
  • 在对象第一次被创建时,会将当前日期和时间自动保存到字段中,以后不会更新。
  • 主要用于记录“对象创建时间”的字段。
  • 适用场景:记录对象的创建时间,比如用户注册时间、文章发表时间。
   created_at = models.DateTimeField(auto_now_add=True)

效果:只在对象初次保存时设置时间,以后不会更改。


总结区别

  • auto_now:每次保存都会更新为当前时间,表示“最后修改时间”。
  • auto_now_add:只在对象创建时设置一次,表示“创建时间”。

注意:两者不能同时用在同一个字段上,否则会报错。

评论
还没有评论
    发表评论 说点什么