Django自定义管理器请求对象/当前用户

时间:2011-01-30 22:58:06

标签: django session

我通过创建一个继承自models.Manager的类来创建自定义管理器。管理器刚刚更改了默认的model.objects查询以添加一些过滤器。现在,我想根据用户登录添加一个过滤器。我不想搜索代码更改添加了什么参数,是否有任何方法可以获取请求对象/当前用户而不将其传递给方法?

我希望这不是一个愚蠢的问题,但我可能会感到困惑......

这是Manager的基本设置

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 个答案:

答案 0 :(得分:7)

django无法在不传递的情况下访问当前request。如果不能没有它你应该重新考虑你的设计!访问request不应该是管理员方法的要求,因为它也可以从没有request对象的地方访问(例如,考虑从中调用方法) python shell)。如果您需要访问当前登录的用户,请将user对象传递给方法(来自request.user),而不是整个request

答案 1 :(得分:2)