Django中执行update更新时auto_now问题

一、问题说明

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

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

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

二、具体原因

出现上述问题的原因在于,obj.save()操作直接走了DjangoModel层、触发了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()
)
相关推荐
DanCheng-studio1 小时前
网安毕业设计简单的方向答疑
python·毕业设计·毕设
轻抚酸~1 小时前
KNN(K近邻算法)-python实现
python·算法·近邻算法
独行soc3 小时前
2025年渗透测试面试题总结-264(题目+回答)
网络·python·安全·web安全·网络安全·渗透测试·安全狮
S***26753 小时前
基于SpringBoot和Leaflet的行政区划地图掩膜效果实战
java·spring boot·后端
汤姆yu4 小时前
基于python的外卖配送及数据分析系统
开发语言·python·外卖分析
如何原谅奋力过但无声4 小时前
TensorFlow 1.x常用函数总结(持续更新)
人工智能·python·tensorflow
翔云 OCR API4 小时前
人脸识别API开发者对接代码示例
开发语言·人工智能·python·计算机视觉·ocr
AndrewHZ5 小时前
【图像处理基石】如何在图像中提取出基本形状,比如圆形,椭圆,方形等等?
图像处理·python·算法·计算机视觉·cv·形状提取
@大迁世界5 小时前
相信我兄弟:Cloudflare Rust 的 .unwrap() 方法在 330 多个数据中心引发了恐慌
开发语言·后端·rust
5***g2986 小时前
新手如何快速搭建一个Springboot项目
java·spring boot·后端