2011-01-30 59 views
3

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

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

这是经理

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) 
+1

类似的问题:http://stackoverflow.com/questions/2006295/django-custom-managers-how-do-i-return-only-objects-created-by-the在我们的日志 – gorus 2011-01-30 23:15:01

回答

6

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

+0

+1建议的设计改造 – 2011-01-31 01:17:51