2010-01-05 17 views
7

Deseo hacer un seguimiento del usuario que crea y luego actualiza todos los registros de un modelo determinado. Tengo la información de "usuario" en el UserProfile del usuario conectado (todos los usuarios deben haber iniciado sesión para actualizar estos registros).¿Cómo implementar la pista de auditoría del modelo Django? ¿Cómo accedes al usuario registrado en el método save() de modelos?

+4

Esto es muy tarde, sin embargo, he escrito una publicación exactamente para eso que puede ser útil para los usuarios que desean hacer auditorías modelo en django: http://spapas.github.io/2015/01/21/django- modelo de auditoría/ – Serafeim

Respuesta

2

Parece que está buscando django-reversion, que le permite realizar un seguimiento de todos los cambios en un modelo determinado, incluidos algunos metadatos sobre el cambio (por ejemplo, quién lo hizo).

+0

Django-revisión es más para rastrear el estado de un modelo a medida que evoluciona, no parece ayudar con el seguimiento del último usuario para modificar el registro. – MikeN

+0

Sí lo hace, consulte la sección "Metadatos de versión" de http://code.google.com/p/django-reversion/wiki/LowLevelAPI –

1

Los modelos de Django no (a propósito) tienen acceso al objeto request. Debe pasarlo al modelo en una vista.

+4

¿por qué no? Me estoy encontrando con un caso en este momento en el que siento que necesito acceder al objeto de usuario actual dentro de un modelo. – ultrajohn

1

La forma más rápida para establecer el campo de usuario automáticamente para todos los cambios realizados en el admin, sería reemplazando el método save_model en su clase de administración (de la documentación de Django):

class ArticleAdmin(admin.ModelAdmin): 
    def save_model(self, request, obj, form, change): 
     obj.user = request.user 
     obj.save() 

De lo contrario, puede use algo como django-revision mencionado por Dominic Rodger.

+0

Esto solo funciona para el administrador. – MikeN

Cuestiones relacionadas