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()
)
相关推荐
计算机学姐25 分钟前
基于SpringBoot的高校社团管理系统【协同过滤推荐算法+数据可视化】
java·vue.js·spring boot·后端·mysql·信息可视化·推荐算法
@forever@4 小时前
【JAVA】LinkedList与链表
java·python·链表
程序员爱钓鱼5 小时前
Python编程实战:面向对象与进阶语法——类型注解与代码规范(PEP 8)
后端·python·ipython
程序员爱钓鱼5 小时前
Python实战:用高德地图API批量获取地址所属街道并写回Excel
后端·python·ipython
Yeats_Liao5 小时前
时序数据库系列(三):InfluxDB数据写入Line Protocol详解
数据库·后端·时序数据库
王元_SmallA5 小时前
Redis Desktop Manager(Redis可视化工具)安装
java·后端
好好研究5 小时前
Spring框架 - 开发方式
java·后端·spring
reasonsummer6 小时前
【教学类-97-06】20251105“葡萄”橡皮泥黏贴(小班主题《苹果与橘子》)
python
hashiqimiya6 小时前
springboot后端的接口headers
java·spring boot·后端