accesso django utente connesso nel responsabile personalizzato
-
20-09-2019 - |
Domanda
Voglio accedere al utente attualmente connesso a un manager personalizzato che ho scritto. Io voglio fare questo in modo che possa filtrare verso il basso i risultati ai soli Mostra oggetti che hanno accesso.
C'è comunque di fare questo senza in realtà passare altrove? Qualcosa di simile a come funziona in vista dove si può fare request.user.
Grazie
Soluzione
Senza passare dentro, il modo migliore che ho visto è quello di utilizzare un middleware (descritto in questa domanda StackOverflow , ti copia / incolla per comodità di riferimento):
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)
Responsabile:
class UserContactManager(models.Manager):
def get_query_set(self):
return super(UserContactManager, self).get_query_set().filter(creator=get_current_user())
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow