34 votes

Consignation de l'activité sur l'administrateur de Django - Django

J'ai besoin de suivre/enregistrer l'activité de l'administration de Django.

Je sais qu'il y a des messages stockés par l'administrateur quelque part, mais je ne sais pas comment y accéder afin de les utiliser comme un simple journal.


J'essaie de suivre les éléments suivants :

  • Utilisateur effectuant l'action

  • Action engagée

  • Date de l'action

Merci les gars.

32voto

Jacob Marciniec Points 33

J'ai dû faire quelque chose de similaire et j'ai utilisé quelque chose comme ça :

from django.contrib.admin.models import LogEntry

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

Vous pouvez voir tous les attributs de LogEntry mais je pense que celles que vous recherchez sont les suivantes l.user , l.action_time y l.obj_repr (le nom de la obj ) et l.action_flag ( { 1:'Add',2:'Change',3:'Delete'} ). J'espère que cela vous aidera !

17voto

zaynyatyi Points 725

Le journal est dans la table django_admin_log dans la base de données utilisée par django.

5voto

the_void Points 3523

Jetez un coup d'œil à la LogEntry qui stocke le journal des actions dans l'administration.

Vous pourriez l'utiliser comme ceci pour insérer des entrées personnalisées dans les journaux :

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)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X