Пользовательский объект запроса Django / текущий пользователь - PullRequest
5 голосов
/ 31 января 2011

Я создал пользовательский менеджер, создав класс, унаследованный от models.Manager. Менеджер просто изменил запрос model.objects по умолчанию, добавив несколько фильтров. Теперь я хочу добавить фильтр в соответствии с пользователем, вошедшим в систему. Я не хочу искать в коде, изменяющем, какие параметры добавляются, есть ли способ получить объект запроса / текущего пользователя, не передавая его методу ?

Надеюсь, это не глупый вопрос, но я могу просто запутаться ...

Это базовая настройка менеджера

class pubManager(models.Manager):

    def get_queryset(self):        
        return pubEnt.objects.filter(state='new')

    def on_site(self):
        return pubEnt.objects.filter(state='old', val=0)

Ответы [ 2 ]

7 голосов
/ 31 января 2011

В django нет способа получить доступ к текущему request, не передав его. Если вы не можете жить без него, вы, вероятно, должны пересмотреть свой дизайн! Наличие доступа к request не должно быть требованием метода менеджера, поскольку он также может быть доступен откуда-то, где у вас нет объекта request (например, вызов метода из оболочки python). Если вам нужен доступ к текущему вошедшему в систему пользователю, передайте объект user методу (из request.user), но не весь request!

2 голосов
/ 14 февраля 2012

Глобальные запросы Django http://nedbatchelder.com/blog/201008/global_django_requests.html

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