تم تسجيل الوصول إلى Django إلى المستخدم في المدير المخصص

StackOverflow https://stackoverflow.com/questions/2273705

سؤال

أرغب في الوصول إلى المستخدم الذي تم تسجيله حاليًا في مدير مخصص كتبته. أريد أن أفعل ذلك حتى أتمكن من تصفية النتائج لإظهار الكائنات التي يمكنهم الوصول إليها فقط.

هل هناك على أي حال من القيام بذلك دون تمريره فعليًا؟ شيء مشابه لكيفية عمله في وجهات النظر حيث يمكنك القيام بالطلب. المستخدم.

شكرًا

هل كانت مفيدة؟

المحلول

بدون تمريره ، فإن أفضل طريقة رأيتها هي استخدام الوسيطة (الموصوفة في هذا السؤال 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())
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top