我有多个User类型,我以模型的形式由用户配置文件表示:
我需要在每个请求上访问特定的用户配置文件.为了避免每次我想直接添加select_related到request.user对象时执行额外的查询.
我在文档中找不到任何关于它的内容.有谁知道最好的方法吗?
mfr*_*iak 11
有趣的问题.查看AuthenticationMiddleware和auth.get_user的源代码,您似乎唯一需要做的就是实现并使用您自己的身份验证后端.如果您不使用任何其他自定义后端功能,则可以继承ModelBackend,仅覆盖get_user满足您需求的方法:
class MyModelBackend(ModelBackend):
def get_user(self, user_id):
try:
user = UserModel._default_manager.select_related("profile").get(pk=user_id)
except UserModel.DoesNotExist:
return None
return user if self.user_can_authenticate(user) else None
Run Code Online (Sandbox Code Playgroud)
当然,您需要将其添加到您的设置AUTHENTICATION_BACKENDS.
| 归档时间: |
|
| 查看次数: |
139 次 |
| 最近记录: |