簡體   English   中英

在 Django 的管理員上記錄活動 - Django

[英]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.userl.action_timel.obj_reprobj的名稱)和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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM