تم تسجيل الوصول إلى Django إلى المستخدم في المدير المخصص
-
20-09-2019 - |
سؤال
أرغب في الوصول إلى المستخدم الذي تم تسجيله حاليًا في مدير مخصص كتبته. أريد أن أفعل ذلك حتى أتمكن من تصفية النتائج لإظهار الكائنات التي يمكنهم الوصول إليها فقط.
هل هناك على أي حال من القيام بذلك دون تمريره فعليًا؟ شيء مشابه لكيفية عمله في وجهات النظر حيث يمكنك القيام بالطلب. المستخدم.
شكرًا
المحلول
بدون تمريره ، فإن أفضل طريقة رأيتها هي استخدام الوسيطة (الموصوفة في هذا السؤال stackoverflow, ، سأقوم بنسخ/لصق لسهولة الرجوع إليه):
الوسيطة:
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())
لا تنتمي إلى StackOverflow