环境
django 4.1
用途
django_admin_log 表主要用于以下几个方面:
审计日志: 可以用来记录管理界面的所有操作,以便审计管理员的操作。
 故障排除: 可以用来诊断和排除管理界面相关的问题。
 数据恢复: 可以用来恢复意外删除的数据。
from django.contrib import admin
# Register your models here.
@admin.register(admin.models.LogEntry)
class LogEntryAdmin(admin.ModelAdmin):
    """
    该类用于显示 admin 内置的 django_admin_log 表。
    其中,content_type 是指用户修改的 Model 名
    """
    list_display = ['action_time', 'user', 'content_type', '__str__']
    list_display_links = ['action_time']
    list_filter = ['action_time', 'content_type', 'user']
    list_per_page = 15
    readonly_fields = ['action_time', 'user', 'content_type',
                       'object_id', 'object_repr', 'action_flag', 'change_message']
 

 
注意
django_admin_log 表可能会包含大量的数据,因此需要定期清理。您可以使用 django.contrib.admin.utils.purge_deleted_admin_logs() 函数来清理过期的日志记录。
扩展
在 Django 中,LogEntry 是一个用于记录管理界面操作的模型。它对应于 django_admin_log 表中的记录。
LogEntry 模型包含以下字段:
id: 自增主键
 action_time: 操作时间
 user: 执行操作的用户
 content_type: 操作对象的类型
 object_id: 操作对象的 ID
 object_repr: 操作对象的表示形式
 changes: 操作的详细信息
 LogEntry 模型的主要用途包括:
审计日志: 可以用来记录管理界面的所有操作,以便审计管理员的操作。
 故障排除: 可以用来诊断和排除管理界面相关的问题。
 数据恢复: 可以用来恢复意外删除的数据。
 以下是一些使用 LogEntry 模型的示例:
 获取所有日志记录:
from django.contrib.admin.models import LogEntry
all_logs = LogEntry.objects.all()
 
获取特定用户的日志记录:
from django.contrib.admin.models import LogEntry
user_logs = LogEntry.objects.filter(user=request.user)
 
获取特定对象的日志记录:
from django.contrib.admin.models import LogEntry
from myapp.models import MyModel
mymodel_logs = LogEntry.objects.filter(content_type=ContentType.objects.get_for_model(MyModel), object_id=mymodel_instance.id)
 
获取特定操作类型的日志记录:
from django.contrib.admin.models import LogEntry
add_logs = LogEntry.objects.filter(object_repr__contains="Added")
 
参考:
 主动显示 Django Admin 的日志表 django_admin_log










