これはかなり醜いですが、おそらくUserobjects
プロパティにモンキーパッチを適用できます。ミドルウェアの場合:
# manager.py
from django.contrib.auth.models import UserManager
class MyUserManager(UserManager):
def get_query_set(self):
qs = super(MyUserManager, self).get_query_set()
return qs.select_related('profile')
# middleware.py
from django.contrib.auth.middleware import AuthenticationMiddleware
from managers import MyUserManager
class MyAuthMiddleware(AuthenticationMiddleware):
def process_request(self, request):
super(AuthenticationMiddleware, self).process_request(request)
User.objects = MyUserManager()
return None
次に、次の行を置き換えsettings.py
ます。
MIDDLEWARE_CLASSES = (
# ...
'django.contrib.auth.middleware.AuthenticationMiddleware',
# ...
)
に:
# settings.py
MIDDLEWARE_CLASSES = (
# ...
'yourapp.middleware.MyAuthMiddleware',
# ...
)
注1:このコードは純粋に理論的なものであり、テストされたことがなく、テストする時間もありません。
注2:長期的なメンテナンスの観点から、このソリューションの使用はお勧めできません。
注3:誰かが何か他のことを提案した場合、あなたはおそらく私よりも彼または彼女に耳を傾けるべきです。
注4:おそらくより良いアイデアとして、完全に制御できるモデルクラスであるプロファイルをクエリしてみませんか?とにかく、いつでもプロファイルからユーザーオブジェクトを取得できるので、…</ p>