gpt4 book ai didi

python - 已验证用户的 prefetch_related

转载 作者:太空宇宙 更新时间:2023-11-03 10:52:57 27 4
gpt4 key购买 nike

我正在开发一个 Django 网络应用程序,我正在使用 prefetch_relatedselect_related 方法来最小化单个数据库的访问量,我在我的 User 模型中有一个特定的方法可以从中提取几个不同的相关对象。

def get_profile_info(self):
*fetch data from a couple of models*

然后我在我的 View 中使用这个方法。

def profile(request):
profile_info = request.user.get_profile_info()
*rest of the view*

问题是,由于 request.user 不是通过普通查询方法检索的,所以我无法使用 prefetch_relatedselect_related 以及拉用户,我找不到任何方法来检索相关数据以及该用户的模型。

有没有办法覆盖用户模型的检索,以便我可以运行 prefetch_relatedselect_related 方法?

最佳答案

对于这个 necroposting 很抱歉,但是这个主题非常重要并且存在非常简单的答案,只需为您的用户模型创建一个自定义管理器并使用 select_related 覆盖 get 方法像这样:

from django.contrib.auth.models import AbstractUser, UserManager


class CustomUserManager(UserManager):
def get(self, *args, **kwargs):
return super().select_related('<put fields that you want>').get(*args, **kwargs)


class CustomUser(AbstractUser):
...

objects = CustomUserManager()

现在,每当 Django 为 request.user 检索用户实例时,它都会使用这个管理器。此外,您所有的 CustomUser.objects.get() 查询也将选择指定的相关字段。

关于python - 已验证用户的 prefetch_related,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46854395/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com