Возможно ли получить доступ к принципалу вызывающего абонента в классе модели в Django? - PullRequest
0 голосов
/ 11 апреля 2011

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

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

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

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

1 Ответ

1 голос
/ 11 апреля 2011

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

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

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

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

...