Question

Je veux accéder à l'utilisateur actuellement connecté à un gestionnaire personnalisé que je l'ai écrit. Je veux faire cela pour que je puisse filtrer vers le bas les résultats aux seuls objets d'exposition, ils ont accès.

Y at-il de toute façon de le faire sans passer réellement? Quelque chose de semblable à la façon dont cela fonctionne dans les vues où vous pouvez faire request.user.

Merci

Était-ce utile?

La solution

Sans passer dans, la meilleure façon que je l'ai vu est d'utiliser un middleware (décrit dans cette question StackOverflow, je vais copier / coller pour faciliter la référence):

Middleware:

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)

Gestionnaire:

class UserContactManager(models.Manager):
    def get_query_set(self):
        return super(UserContactManager, self).get_query_set().filter(creator=get_current_user())
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top