django-simple-history,在管理中显示更改的字段

Ani*_*nda 5 python django django-simple-history

当我从 admin.ModelAdmin 继承时,在管理页面的历史记录中,我可以看到哪些字段已更改。但是,现在我需要使用 django-simple-history 来跟踪我所有的模型更改。现在,对于管理员,我继承了 simple_history.SimpleHistoryAdmin。虽然我可以看到所有模型更改并还原它们,但我看不到更改了哪些字段。是否可以将这种方便的功能添加到 SimpleHistoryAdmin 中?

Raf*_*afi 8

我找到了解决这个问题的方法。我添加了一个 ModelAdmin 方法并使用历史比较在更改历史记录表中添加自定义字段。

history_list_display = ['changed_fields']

def changed_fields(self, obj):
    if obj.prev_record:
        delta = obj.diff_against(obj.prev_record)
        return delta.changed_fields
    return None
Run Code Online (Sandbox Code Playgroud)


Pra*_*nky 5

您需要的是history_list_display管理员中的字段。包含在其中的字段列表history_list_display将及其相应的条目显示在历史记录页面中。

像这样的东西:

class SomeAdmin(admin.ModelAdmin):

    def some_user_defined(self, obj):
        return "something"

    date_hierarchy = 'created_at'
    search_fields = ['field1', 'field2']
    list_display = ('field1', 'field2',)
    list_filter = ('field1',)
    history_list_display = ('field1', 'field2', 'some_user_defined',)
Run Code Online (Sandbox Code Playgroud)

这将显示field1field2以及commentuserreason