在 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 请求...