作成したカスタムマネージャーで現在ログインしているユーザーにアクセスしたい。これを実行して、結果をフィルタリングして、アクセスできるオブジェクトのみを表示できるようにします。
実際に渡さずにこれを行う方法はありますか?request.userを実行できるビューでの動作と似ています。
ありがとう
作成したカスタムマネージャーで現在ログインしているユーザーにアクセスしたい。これを実行して、結果をフィルタリングして、アクセスできるオブジェクトのみを表示できるようにします。
実際に渡さずにこれを行う方法はありますか?request.userを実行できるビューでの動作と似ています。
ありがとう
それを渡さずに、私が見た最良の方法はミドルウェアを使用することです(この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())