我已经在Django Admin中启用了日志条目
class CustomLogEntryAdmin(admin.ModelAdmin):
list_display = [
"action_time",
"user",
"content_type",
"object_id",
"object_repr",
"action_flag",
"change_message",
]
# list filter
list_filter = ["action_time", "user", "content_type"]
# search
search_fields = ["user__username", "object_repr"]
admin.site.register(LogEntry, CustomLogEntryAdmin)
字符串
我还有另一个模型,其admin.py代码如下所示
class RegAdmin(ExportActionMixin, admin.ModelAdmin):
resource_class = RegAdminResource
def has_view_permission(self, request, obj=None):
return True
def has_module_permission(self, request):
return True
型
默认情况下,所有更改、添加和删除条目都将被记录,但我也希望在对其执行任何导出操作时记录条目。
# in admin class
def export_action(self, request, *args, **kwargs):
# Log the export action
LogEntry.objects.create(
user_id=request.user.id,
content_type_id=ContentType.objects.get_for_model(self.model).id,
object_id=None,
object_repr=str(self.model),
action_flag=1, # Assuming 1 stands for the action flag of 'change'
change_message="Export action triggered.",
)
return super().export_action(request, *args, **kwargs)
型
但是这个函数在执行导出操作时不会被触发。我通过添加一个print语句来确认。
我该怎么做?任何帮助都将不胜感激。
1条答案
按热度按时间uxhixvfz1#
你已经很接近了,唯一的问题是动作引用了
ExportActionMixin
中定义的动作,所以你可以覆盖任何你想要的,它不会引用你的方法。但是你可以覆盖它来获得正确的动作,所以:字符串
更新:我已经打开了一个pull request [GitHub]来修复这个问题。