Как внедрить контрольный журнал модели Django? Как получить доступ вошедшего в систему пользователя в моделях save ()? - PullRequest
8 голосов
/ 05 января 2010

Я хочу отслеживать пользователя, который создает, а затем обновляет все записи данной модели. У меня есть информация о пользователе в пользовательском профиле пользователя, вошедшего в систему (все пользователи должны войти в систему для обновления этих записей).

Ответы [ 3 ]

3 голосов
/ 05 января 2010

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

1 голос
/ 05 января 2010

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

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

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

1 голос
/ 05 января 2010

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...