Frage

Ich möchte auf den aktuell angemeldeten Benutzer in einem benutzerdefinierten Manager zugreifen, den ich geschrieben habe. Ich möchte dies tun, damit ich die Ergebnisse filtern kann, um nur Objekte anzuzeigen, auf die sie Zugriff haben.

Gibt es trotzdem dies, ohne es tatsächlich einzugeben? Ähnlich wie es funktioniert in Ansichten, bei denen Sie anfordern können. Benutzer.

Vielen Dank

War es hilfreich?

Lösung

Ohne es weiterzugeben, kann ich am besten eine Middleware verwenden (beschrieben in Diese Stackoverflow -Frage, Ich kopiere/einfüge für einfache Referenz):

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)

Manager:

class UserContactManager(models.Manager):
    def get_query_set(self):
        return super(UserContactManager, self).get_query_set().filter(creator=get_current_user())
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top