Django auto_now=True 不更新

python 复制代码
create_time = models.DateTimeField(db_column="CreateTime", auto_now_add=True)
update_time = models.DateTimeField(db_column="UpdateTime", auto_now=True)

现象:

update_time 的auto_now设置为True,更新了表格里的某个属性的值,却发现update_time和create_time始终一致,保持最开始的创建时间。

原因:

因为更新时用的filter的update。

filter的update 通常用于批量更新数据,直接调用sql语句,不通过model层,所以导致了update_time不更新。

python 复制代码
models.AbilityScore.objects.filter(employee_id=employee_id, 
                                            ability_id=ability_id).update(upcoming_value=upcoming_value)

解决:

先通过filter判断出有该项记录后通过get获取该项记录也即model类的一个实例对象,通过该实例的属性赋值方式来更新,即可使update_time更新,最好记得调用save()。

python 复制代码
        if models.AbilityScore.objects.filter(employee_id=employee_id, ability_id=ability_id):
            # models.AbilityScore.objects.filter(employee_id=employee_id,
            #                                    ability_id=ability_id).update(upcoming_value=upcoming_value)
            employee_ability = models.AbilityScore.objects.get(employee_id=employee_id, ability_id=ability_id)
            employee_ability.upcoming_value = upcoming_value
            employee_ability.save()

参考:django model的update时auto_now不被更新的原因 - 代码先锋网

相关推荐
高洁013 小时前
具身智能感知系统底层原理
人工智能·python·深度学习·机器学习·transformer
我就是不信3 小时前
Java8 lambda 表达式 forEach 如何提前终止?
开发语言·windows·python
全栈弄潮儿4 小时前
Python实战第9期:文件操作
后端·python·编程语言
小星星_ios4 小时前
从 3Blue1Brown 到 NumPy:手写一个神经网络训练 MNIST
人工智能·python·神经网络
Maxwin4 小时前
Manim 竖屏画布选 9×16 还是 4.5×8?从 font_size 和每单位像素数说起
python·ffmpeg
jiushidt4 小时前
在 DBeaver 中为 SQLite 启用 SpatiaLite
数据库·sqlite
昭昭日月明4 小时前
使用 Ragas 量化 RAG
python·langchain·ai编程
姜九笙5614 小时前
python学习---归来仍是新人
java·python·学习
幸福清风4 小时前
从域名到一行 nginx 配置:一次站点 HTTPS 证书更换与排障复盘
python·nginx·https
云水初5 小时前
【agent篇】RAG Agent避坑指南(附高级RAG Agent汇总)
开发语言·笔记·python·学习·langchain·agent·rag