Django管理员的记录活动 - Django

Rad*_*Hex 26 python django logging django-admin

我需要跟踪/记录Django管理员的活动.

我知道管理员在某处存储了消息,但我不知道如何访问它们以便将它们用作简单的日志.


我正在尝试跟踪以下内容:

  • 用户执行操作

  • 已采取行动

  • 行动日期

多谢你们.

Kat*_*ine 21

我不得不做类似的事情,我使用了这样的东西:

from django.contrib.admin.models import LogEntry

logs = LogEntry.objects.all() #or you can filter, etc.
for l in logs:
    #perform action
Run Code Online (Sandbox Code Playgroud)

您可以看到LogEntry的所有属性,但我认为您要查找的是l.user,l.action_time和l.obj_repr(obj的名称)和l.action_flag({1:'Add', 2: '更改',3: '删除'}).希望有所帮助!


zay*_*tyi 13

日志位于django使用的数据库中的django_admin_log表中.


the*_*oid 5

查看LogEntry类,该类存储管理员内部操作的日志.

您可以像这样使用它在日志中插入自定义条目:

from settings import LOG_SIZE, LOG_THRESHOLD
from django.contrib.admin.models import LogEntry

if not LogEntry._meta.installed:
        raise ImproperlyConfigured("You'll need to put 'django.contrib.admin' in your INSTALLED_APPS setting before you can use the admin application.")

def log_action(user_id, content_type_id, object_id, object_repr, action_flag, change_message=''):
        # limit log size
        log_count = LogEntry.objects.count()

        if log_count > LOG_THRESHOLD:
                to_delete = LogEntry.objects.all()[LOG_SIZE:log_count]

                #FIXME (!?): to_delete.delete()
                for d in to_delete:
                        d.delete()

        LogEntry.objects.log_action(user_id, content_type_id, object_id, object_repr, action_flag, change_message)
Run Code Online (Sandbox Code Playgroud)