2013-03-26 5 views
0

Простой пример использования: После того, как пользователь обновил запись, я хочу получить измененные поля и сохранить их в таблице истории. Я использую django-ditryfields, чтобы получить эту историю. Поэтому мой мыслительный процесс заключался в использовании сигнала pre_save для захвата всех «грязных» полей, и они сохраняли их в моей таблице истории.Использовать сигналы или переопределять метод сохранения модели?

Проблема в том, что я не могу получить request.user при использовании сигналов. Мне нужно это, чтобы посмотреть, какой пользователь внес изменения в запись. Моя другая мысль состояла в том, чтобы просто переопределить метод сохранения моей модели, но тогда я также не могу получить request.user из модели напрямую. Мне нужно отправить ** kwarg ['user'] с информацией о пользователе из представления, чтобы получить эту информацию. Это нормально, но я собираюсь делать вызовы с сохранением из нескольких мест вокруг кода. Я не хочу, чтобы каждый раз, когда я редактировал объект, продолжал передавать request.user. Вот почему я хотел бы иметь одно пятно, как сигнал, чтобы справиться со всем этим. Возможно, какое-то промежуточное ПО, с которым я не знаком?

Есть ли лучший способ достичь такого?

ответ

0

Вы не можете получить доступ к объекту пользователя из сигнала. Вы можете использовать этот сторонний пакет: django-requestprovider для доступа к объекту запроса в сигнале.

Другой способ - переопределить метод сохранения моделей.

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