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不更新。
models.AbilityScore.objects.filter(employee_id=employee_id,
ability_id=ability_id).update(upcoming_value=upcoming_value)
先通过filter判断出有该项记录后通过get获取该项记录也即model类的一个实例对象,通过该实例的属性赋值方式来更新,即可使update_time更新,最好记得调用save()。
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不被更新的原因 - 代码先锋网