【问题标题】:Create a Custom History in Django showing specific field changes在 Django 中创建显示特定字段更改的自定义历史记录
【发布时间】:2018-07-20 11:38:23
【问题描述】:

嘿嘿,

在 Django 中,我想创建我的模型“应用程序”的历史视图,该视图显示一个包含以下列的表:谁(更改)、何时、哪个字段、旧值、新值

我找到了django-simple-history 应用程序,它将模型实例的每个版本都存储在一个新模型中。实际上正是我需要的,但我不知道如何获取历史对象的字段,尤其是比较两个排序的历史对象时发生变化的字段。

有人对此有想法或可能有一种全新的方法吗?

非常感谢!

【问题讨论】:

    标签: python django field history django-simple-history


    【解决方案1】:

    我最近在自己的一个项目中做到了这一点。查看文档的this 部分。基本思想是您将所有历史记录相互比较,然后遍历每个 diff 以查看各个字段的更改。如果你做对了,你应该能够构建如下所示的东西:

    July 24th, 2018:
        Field | Initial value | New value
        ---------------------------------
        Name  | "Bob"         | "Bobby"
        bool  | True          | False
    

    【讨论】:

    • 您如何从delta.changes 检索日期?它只包含fieldoldnew。我正在尝试实现类似的结果,但无法弄清楚在迭代 delta.changes 时如何访问 changed_byhistory_date 等历史字段。
    【解决方案2】:

    您可以考虑以下两点:

    1. 创建一个新模型并将历史表作为外键连接,这将是一对一的关系。
    2. 现在,您必须创建一个函数,通过比较每两个字段来检测哪些字段发生了变化。

    如果我遇到同样的问题,我会像上面那样去。 但是,如果您在此期间已经得到了解决方案,请分享。谢谢。

    【讨论】:

      猜你喜欢
      • 2011-08-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-07
      • 2015-02-16
      • 2020-04-30
      • 1970-01-01
      相关资源
      最近更新 更多