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()
)
相关推荐
梅孔立7 小时前
【实用教程】python 批量解析 EML 邮件文件 存成txt ,可以利用 AI 辅助快速生成年终总结
开发语言·python
用户695619440377 小时前
前后端分离VUE3+Springboot项目集成PageOffice核心代码
后端
rannn_1117 小时前
【Git教程】概述、常用命令、Git-IDEA集成
java·git·后端·intellij-idea
我家领养了个白胖胖7 小时前
向量化和向量数据库redisstack使用
java·后端·ai编程
嘻哈baby7 小时前
NextCloud私有云盘完整部署指南
后端
Ray667 小时前
Linux 日志处理三剑客:grep、awk、sed
后端
BoBoZz197 小时前
ExtractSelectionUsingCells选择和提取三维模型中的特定单元(Cell)
python·vtk·图形渲染·图形处理
韩立学长7 小时前
【开题答辩实录分享】以《跳蚤市场二手物品交易推荐平台》为例进行选题答辩实录分享
python·django
陈随易7 小时前
PostgreSQL v18发布,新增AIO uuidv7 OAuth等功能
前端·后端·程序员
yaoxin5211237 小时前
273. Java Stream API - Stream 中的中间操作:Mapping 操作详解
java·开发语言·python