确定Django模型实例已更新多少次

时间:2019-04-17 22:27:58

标签: django django-models

我正在尝试找到一种通用方法来获取模型实例对其任何字段进行更新的次数。换句话说,在Django中,如何计算表中特定行的更新次数?我的目的是显示已进行了多少次更新。

假设我有:

class MyModel(models.Model):
    field = models.CharField()
    another_field = models.IntegerField()

    ...

我有一个模型实例:

my_model = MyModel.objects.get(id=1)

有没有一种方法可以找出my_model的任何字段已更新了多少次?还是我需要创建一个像update_count这样的字段,并在每次更新字段时增加它?希望Django中提供某种机制,因此我不必走那条路。

希望这不是一个基本的问题,我仍在学习Django,并且一直在努力自己解决这个问题。

1 个答案:

答案 0 :(得分:1)

没有通用的方法可以做到这一点。如wim所述,您可以使用一些“版本包”来跟踪更改的整个历史记录。我个人使用了相同的建议:django-reversion,但是有other alternatives

如果您只需要跟踪某些字段,则可以自己编写一些更简单的机制:

  1. 创建模型/字段来跟踪您的信息
  2. 使用类似FieldTracker之类的方法来跟踪对特定字段的更改
  3. 创建处理程序后保存信号(或仅修改模型的save方法)以保存数据

您还可以使用“表审核”之类的方法。我自己还没有尝试过类似的方法,但是也有一些方法可以解决这个问题: