Ani*_*nda 5 python django django-simple-history
当我从 admin.ModelAdmin 继承时,在管理页面的历史记录中,我可以看到哪些字段已更改。但是,现在我需要使用 django-simple-history 来跟踪我所有的模型更改。现在,对于管理员,我继承了 simple_history.SimpleHistoryAdmin。虽然我可以看到所有模型更改并还原它们,但我看不到更改了哪些字段。是否可以将这种方便的功能添加到 SimpleHistoryAdmin 中?
我找到了解决这个问题的方法。我添加了一个 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)
您需要的是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)
这将显示field1
、field2
以及comment
user
reason