Django中执行update更新时auto_now问题

一、问题说明

在我们给模型的时间字段updated_at字段添加auto_now=True之后,原则上来说在更新数据是会自动修改更新时间。

但是当我们使用在代码中使用ORM中的filter(xxx=xxx).update(xxx=xxx)时发现,更新时间字段并没有完成更新。

而如果使用obj.save()或通过ModelViewSets接口发起更新操作时,updated_at字段是可以更新的。

二、具体原因

出现上述问题的原因在于,obj.save()操作直接走了Django的Model层、触发了auto_now机制,而走前端接口访问时也同样经过了模型的序列化操作,

而对于上面的filter(xxx=xxx).update(xxx=xxx),通过打印SQL我们可以看出,这类update操作是单纯被转换为了SET SQL,并没有经过Model层,自然也就没有对updated_at字段更新了。

三、解决方法

解决方法很简单,只需要在进行update操作时,在更新字段中加上:

python3 复制代码
ModelName.objects.filter(
	xxx=xxx,
).update(
	xxx=xxx.
	updated_at=datetime.dattime.now()
)
相关推荐
斌糖雪梨6 分钟前
spring auth 核心流程详解
java·后端·spring
quantdash_cc10 分钟前
从实时行情到价格观察表:用 Python 和 Pandas 构建策略输入数据
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
镜子AI11 分钟前
镜子AI工程实践:用 Python 做 GEO 实体一致性审计,并自动生成 JSON-LD 结构化数据
人工智能·python·json
高频因子挖掘机2 小时前
本地已有一年历史数据,第二天更新别只拉“昨天一天”:量化 K 线增量同步实践
后端·github·api
高频因子挖掘机2 小时前
只补缺失日期,不重拉全部历史:增量更新 K 线应该怎么设计?
后端·github·api
Gopher_HBo2 小时前
Go reflect 包动态调用与方法反射 —Call、MakeFunc 与性能
后端
码事漫谈3 小时前
人设带处境,AI 更入戏
后端
掘金酱3 小时前
【10.24 特别活动】AI 时代,程序员的新饭碗在哪里?
前端·人工智能·后端
leeyi3 小时前
缓存同步之后,还要考虑没收到消息的节点
后端·性能优化·erlang
IT_陈寒4 小时前
Redis的原子性竟然失效了?记一次分布式锁翻车实录
前端·人工智能·后端