django管理日志记录(日志审计django_admin_log)
在Django中,可以通过定义模型来存储管理员操作日志(即django_admin_log
表)。以下是一个简化的模型定义示例:
from django.contrib.admin.models import LogEntry
from django.db import models
from django.contrib.contenttypes.fields import GenericForeignKey
from django.contrib.contenttypes.models import ContentType
# 定义模型以存储对应LogEntry的额外信息
class AdminAuditLog(models.Model):
log_entry = models.OneToOneField(LogEntry, on_delete=models.CASCADE)
additional_info = models.TextField(blank=True)
# 定义GenericForeignKey以连接到任何模型
content_type = models.ForeignKey(ContentType, on_delete=models.CASCADE)
object_id = models.PositiveIntegerField()
content_object = GenericForeignKey('content_type', 'object_id')
def __str__(self):
return f"{self.log_entry.action_time} - {self.log_entry.user} - {self.log_entry.object_repr}"
# 在admin.py中注册模型
from django.contrib import admin
admin.site.register(AdminAuditLog)
在这个示例中,AdminAuditLog
模型扩展了Django的LogEntry
模型,并添加了一个通用关联content_object
,可以用来关联任何Django模型对象。在admin.py
中注册这个模型后,你可以在Django admin界面中查看和管理管理员操作日志及其附加信息。
评论已关闭