accès django utilisateur connecté dans le gestionnaire personnalisé
-
20-09-2019 - |
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
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