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()
)
相关推荐
你的人类朋友39 分钟前
🤔Token 存储方案有哪些
前端·javascript·后端
烛阴39 分钟前
从零开始:使用Node.js和Cheerio进行轻量级网页数据提取
前端·javascript·后端
猎嘤一号1 小时前
使用 PyTorch 和 TensorBoard 实时可视化模型训练
人工智能·pytorch·python
liuyang___1 小时前
日期的数据格式转换
前端·后端·学习·node.js·node
Takina~2 小时前
python打卡day49
python
Frankabcdefgh2 小时前
Python基础数据类型与运算符全面解析
开发语言·数据结构·python·面试
是梦终空2 小时前
Python毕业设计226—基于python+爬虫+html的豆瓣影视数据可视化系统(源代码+数据库+万字论文)
爬虫·python·html·毕业设计·毕业论文·源代码·豆瓣影视数据可视化
kaiaaaa2 小时前
算法训练第十五天
开发语言·python·算法
小玺玺2 小时前
[RDK X5] MJPG编解码开发实战:从官方API到OpenWanderary库的C++/Python实现
c++·python·opencv·rdk x5
zhuiQiuMX3 小时前
力扣LFU460
python·leetcode