gpt4 book ai didi

django - django 模板循环中的 get_profile 导致许多 SQL 请求

转载 作者:行者123 更新时间:2023-12-02 02:12:22 24 4
gpt4 key购买 nike

在 django 模板中,当你循环显示许多用户的配置文件信息时,你调用 get_profile,从而生成尽可能多的 SQL 请求:

{% for user in users %}
{{ user.username }} : {{ user.get_profile.birth_date }}
{% endfor %}

如果要显示 50 个用户,它将生成 50 个 SQL 请求以获取每个用户的配置文件。

有没有一种优雅的方式来减少请求的数量?

编辑:

最终目标是管理一个项目列表,其中的项目具有用户对象作为属性。示例:stackoverflow 中的每个问题都有一个用户作为创建者。如何在最少的 SQL 请求中列出所有最近的问题,同时显示用户配置文件信息:

模板应该是这样的:

{% for question in recent_questions %}
{{ question.title }}
{{ question.body }}
{{ question.creator.username }}
{{ question.creator.get_profile.age }}
{{ question.creator.get_profile.country }}
{% endfor %}

但是这样会产生太多的SQL请求...

最佳答案

我会为这种情况编写自己的模板标签,

@register.simpletag(takes_context=True)
def load_profiles(context,users):
context['profiles']=ProfileClass.objects.select_related().filter(user__in=users)
return ''

模板:

{% load_profiles users %}
{% for one in profiles%}
{{one.user.username}} : {{one.birth_date }}
{% endfor %}

关于django - django 模板循环中的 get_profile 导致许多 SQL 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12194302/

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