0
点赞
收藏
分享

微信扫一扫

django管理日志记录(日志审计django_admin_log)

芷兮离离 03-19 11:30 阅读 3

环境

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

举报

相关推荐

0 条评论