2010-01-05 1 views
7

Я хочу отслеживать пользователя, который создает, а затем обновляет все записи данной модели. У меня есть «пользовательская» информация в зарегистрированном пользовательском профиле пользователя (все пользователи должны войти в систему, чтобы обновить эти записи).Как реализовать контрольный журнал модели Django? Как вы можете войти в систему с помощью метода save()?

+4

Это действительно очень поздно, но я написал сообщение точно для того, что может быть полезно для пользователей, которые хотят провести аудит модели в django: http://spapas.github.io/2015/01/21/django- модель-аудит/ – Serafeim

ответ

2

Похоже, что вы ищете django-reversion, что позволяет отслеживать все изменения в данной модели, включая некоторые метаданные об изменении (например, кто это сделал).

+0

Django-revision больше подходит для отслеживания состояния модели по мере ее развития, похоже, не помогает отслеживать последнего пользователя, чтобы изменить запись. – MikeN

+0

Да, это так - см. Раздел «Метаданные версии» в http://code.google.com/p/django-reversion/wiki/LowLevelAPI –

1

Модели Django не имеют (специально) имеют доступ к объекту request. Вы должны передать его модели в виде.

+4

почему нарочно нет? Я сейчас столкнулся с проблемой, когда мне кажется, что мне нужно получить доступ к текущему пользовательскому объекту внутри модели. – ultrajohn

1

Самый быстрый способ автоматически установить поле пользователя для всех изменений, внесенных в админке, было бы путем переопределения метода save_model в классе администратора (из документации Django):

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

В противном случае, вы можете используйте что-то вроде django-revision, упомянутое Домиником Роджером.

+0

Это работает только для администратора. – MikeN

Смежные вопросы