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不被更新的原因 - 代码先锋网

相关推荐
站大爷IP3 分钟前
5个技巧写出专业Python代码:从新手到进阶的实用指南
python
hrrrrb21 分钟前
【Python】字符串
java·前端·python
大翻哥哥36 分钟前
Python 2025:低代码开发与自动化运维的新纪元
运维·python·低代码
Source.Liu1 小时前
【Pywinauto库】12.2 pywinauto.element_info 后端内部实施模块
windows·python·自动化
Source.Liu1 小时前
【Pywinauto库】12.1 pywinauto.backend 后端内部实施模块
开发语言·windows·python·自动化
用户8356290780511 小时前
用Python高效处理Excel数据:Excel数据读取指南
后端·python
我星期八休息1 小时前
深入理解跳表(Skip List):原理、实现与应用
开发语言·数据结构·人工智能·python·算法·list
蒋星熠2 小时前
如何在Anaconda中配置你的CUDA & Pytorch & cuNN环境(2025最新教程)
开发语言·人工智能·pytorch·python·深度学习·机器学习·ai
合作小小程序员小小店2 小时前
机器学习介绍
人工智能·python·机器学习·scikit-learn·安全威胁分析
王维志2 小时前
LiteDB详解
数据库·后端·mongodb·sqlite·c#·json·database