django模型字段更新特殊事件

时间:2014-11-29 16:29:44

标签: python django django-models django-1.6

如果我在DateTimeField上定义auto_now = True,则每个save()都会更新此字段。但是,当特殊事件发生时,如何更新此字段?

例如:仅当同一模型的某个其他字段已更改其状态时,才更新DateTimeField。当然,我可以在数据库级别定义一个触发器,或捕获pre_save或post_save信号来制作东西。但有没有办法以另一种方式做到这一点?

2 个答案:

答案 0 :(得分:1)

您可以安装django-models-utils并使用它MonitorField。它是一个DateTimeField子类,用于监视模型上的另一个字段,并在受监视字段发生更改时将其自身更新为当前日期时间。

答案 1 :(得分:0)

您可以使用' update_fields' save()方法的参数:

# Write your logic to check if the fields or field has changed, then:
model.save(update_fields=['field1', 'field2'])  # Do not include the DateTimeField if you don't want it updated.