什么是为django中的模型制作完整历史的最佳方法?

时间:2018-04-25 19:08:44

标签: django django-models django-rest-framework django-views

如何为模型创建历史记录,以显示字段中的旧值和新更改值?

在我看来,我认为为具有相同字段的每个模型创建历史模型,当用户创建新模型或从第一个模型更新数据时,也会转到第二个模型。

我搜索了很多这个问题,我找到了一个名为django-reversion的数据包,但我不明白如何让它存储旧值和新值如果任何人可以帮我解决这个问题请告诉我

3 个答案:

答案 0 :(得分:2)

为此,您可以使用simple-history app

您的实例的每次更改都会反映在历史表中。每个更改都会有一个包含新值的新行。这样您就可以为每个字段重现所有旧值。

答案 1 :(得分:1)

this link中,有一个不同包的比较,可用于审计/模型历史。

我使用django-simple-history进行了很好的集成,以查看管理员中每个模型实例的更改列表。

至少对于我的用例,django-simple-history为我提供了我需要的东西,到目前为止我没有遇到任何问题。

编辑:只是一个额外的注释

此程序包 NOT 跟踪ManyToManyField的历史记录。

另见这些相关问题:

  1. How can I store history of ManyToManyField using django-simple-history.
  2. History of a ManyToManyField in django-simple-history
  3. Github问题:

    1. https://github.com/treyhunner/django-simple-history/issues/16

答案 2 :(得分:1)

可能有一个干净的图书馆可以完成你需要的一切,我只是不知道。

我如何处理此问题会覆盖模型保存功能。您可以参考this prior stackoverflow post获取正在发生的事情的要点。通过这种方式,您可以指定要为其应用内存的模型类/ sql表。然后添加到自定义保存方法以在新的更改日志模型类中创建新行。