문제

내가 쓴 사용자 정의 관리자에서 현재 로그인 한 사용자에게 액세스하고 싶습니다. 액세스 할 수있는 객체 만 표시하기 위해 결과를 필터링 할 수 있도록이 작업을 수행하고 싶습니다.

어쨌든 실제로 그것을 전달하지 않고 이것을하는 것이 있습니까? 요청을 수행 할 수있는 시야에서 작동하는 방식과 유사한 것.

감사

도움이 되었습니까?

해결책

전달하지 않고 내가 본 가장 좋은 방법은 미들웨어를 사용하는 것입니다 ( 이 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