[英]Logging activity on Django's admin - Django
我需要跟蹤/記錄 Django 管理員的活動。
我知道管理員在某處存儲了消息,但我不知道如何訪問它們以便將它們用作簡單的日志。
我正在嘗試跟蹤以下內容:
執行操作的用戶
已采取行動
行動日期時間
謝謝你們。
我不得不做類似的事情,我使用了這樣的東西:
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:'Add',2:'Change',3:'Delete'}
)。 希望有幫助!
日志在 django 使用的數據庫中的 django_admin_log 表中。
查看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)
如果您不介意安裝額外的依賴項,我可以推薦django-logentry-admin ,對我來說就像一個魅力。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.