37 Stimmen

Protokollierung der Aktivitäten im Django-Admin - Django

Ich brauche zu verfolgen/protokollieren Aktivität auf der Django-Admin.

Ich weiß, dass es irgendwo vom Administrator gespeicherte Nachrichten gibt, aber ich weiß nicht, wie ich auf sie zugreifen kann, um sie als einfaches Protokoll zu verwenden.


Ich versuche, das Folgende zu verfolgen:

  • Benutzer, der die Aktion durchführt

  • Aktion verpflichtet

  • Zeitpunkt der Aktion

Danke, Leute.

37voto

Katharine Punkte 463

Ich musste etwas Ähnliches machen und habe etwas Ähnliches verwendet:

from django.contrib.admin.models import LogEntry

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

Sie können sehen alle Attribute für LogEntry aber ich denke, die von Ihnen gesuchten sind l.user , l.action_time y l.obj_repr (der Name des obj ) und l.action_flag ( { 1:'Add',2:'Change',3:'Delete'} ). Ich hoffe, das hilft!

18voto

zaynyatyi Punkte 1096

Das Protokoll befindet sich in der Tabelle django_admin_log in der von django verwendeten Datenbank.

7voto

the_void Punkte 5388

Werfen Sie einen Blick auf die LogEntry Klasse, die das Protokoll für die Aktionen im Adminbereich speichert.

Auf diese Weise können Sie benutzerdefinierte Einträge in die Protokolle einfügen:

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)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X