我通过创建一个继承自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)
答案 0 :(得分:7)
django无法在不传递的情况下访问当前request
。如果不能没有它你应该重新考虑你的设计!访问request
不应该是管理员方法的要求,因为它也可以从没有request
对象的地方访问(例如,考虑从中调用方法) python shell)。如果您需要访问当前登录的用户,请将user
对象传递给方法(来自request.user
),而不是整个request
!
答案 1 :(得分:2)