Активность регистрации в Django admin - Django
Мне нужно отслеживать/записывать активность в администраторе Django.
Я знаю, что где-то есть сообщения, хранящиеся администратором, но я не знаю, как обращаться к ним, чтобы использовать их в качестве простого журнала.
Я пытаюсь отслеживать следующее:
Спасибо, ребята.
Ответы
Ответ 1
Мне нужно было сделать что-то подобное, и я использовал что-то вроде этого:
from django.contrib.admin.models import LogEntry
logs = LogEntry.objects.all() #or you can filter, etc.
for l in logs:
#perform action
Вы можете видеть все атрибуты для LogEntry, но я думаю, что те, которые вы ищете, - l.user, l.action_time и l.obj_repr (имя объекта obj) и l.action_flag ({1: 'Добавить', 2: 'Изменить', 3: 'Удалить'}). Надеюсь, что это поможет!
Ответ 2
Журнал находится в таблице django_admin_log в базе данных, используемой django.
Ответ 3
Взгляните на класс 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)