2010-02-16 78 views
2

我想访问我写过的自定义管理器中当前登录的用户。我想这样做,这样我可以过滤结果,只显示他们有权访问的对象。django访问在自定义管理器中登录的用户

有没有办法做到这一点,而没有真正将它传入?类似于您可以在其中执行request.user的视图中的工作方式。

感谢

+0

有没有机会看到经理? –

回答

5

没有传递给它的,我见过的最好的方法是使用一个中间件(在this StackOverflow question描述,我就复制/粘贴为便于参考):

中间件:

try: 
    from threading import local 
except ImportError: 
    from django.utils._threading_local import local 

_thread_locals = local() 

def get_current_user(): 
    return getattr(_thread_locals, 'user', None) 

class ThreadLocals(object): 
    def process_request(self, request): 
     _thread_locals.user = getattr(request, 'user', None) 

经理:

class UserContactManager(models.Manager): 
    def get_query_set(self): 
     return super(UserContactManager, self).get_query_set().filter(creator=get_current_user())