возможно ли получить доступ к вызывающему абоненту в классе модели в django?

Возможно ли получить доступ к принципалу пользователя в классе модели?

Например, в java в классе ejb всегда доступна переменная ejbcontext, которая дает вам информацию о вызывающем абоненте (аутентифицированный пользователь)

Мне интересно, есть ли способ получить это в django в классе модели только?

очевидно, что я могу передать request.user в класс модели, но это очень громоздко.


person devharb    schedule 11.04.2011    source источник


Ответы (1)


Это не слишком ясно из вашего вопроса, но я предполагаю, что вам нужен «автоматический» доступ к текущему пользователю из экземпляра модели.

Короткий ответ: нет, это невозможно.

Поскольку моделями можно манипулировать вне обычного потока запросов-ответов (например, из сценария cronjob), пользователь может даже не существовать. Кроме того, запросы и аутентифицированные пользователи являются областью представлений (контроллеров MVC), а не моделей.

Лучшее, что вы получите, — это вручную передать request.user методам модели, в которых вы хотите их использовать. немного волшебства, которое вы можете сделать с исполняющими фреймами Python и модулем inspect, но явное действительно намного лучше, чем неявное. И, как я уже говорил, request.user (или даже сам запрос) не всегда существует.

person eternicode    schedule 11.04.2011