Django 通过调用 将用户分配给 django.contrib.auth.middleware.py
中的请求request.user = SimpleLazyObject(lambda: get_user(request))
get_user函数位于init.py文件中,该文件又调用backends.py中的另一个get_user函数
def get_user(self, user_id):
try:
user = UserModel._default_manager.get(pk=user_id)
except UserModel.DoesNotExist:
return None
return user if self.user_can_authenticate(user) else None
这里正在调用数据库以通过 id 获取用户。如何在同一查询中获取用户配置文件(通过一对一字段与用户相关)并将其传播回去,以便我可以将其分配给request.profile?
def get_user(self, user_id):
profile = Profile.objects.filter(user_id=user_id).select_related("user").first()
if not profile:
return None
return profile if self.user_can_authenticate(user) else None