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

neo*_*ser 5 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)
Run Code Online (Sandbox Code Playgroud)

Ber*_*ant 8

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