我有一个页面,用户可以在其中查看特定产品的评论列表。
在视图中,我得到了以下列表:
comments = product.comments.all().order_by('-timestamp')
和模板中的这篇文章:
1 {% if comments %}
2 {% for comment in comments %}
3 <div class="comment">
4 <a href="/user/{{ product.author }}/">{{ comment.author }}</a>
5 <br>{{ comment.text }}
6 </div>
7 {% endfor %}
8 {% endif %}
当我转到产品页面时使用django调试工具栏我可以看到Django执行许多查询是列表中的许多注释。例如,在包含10条评论的评论列表的产品页面中,Django执行大约15个查询。如果我提交新评论,查询次数将增加到16次。
如果我尝试删除{{ comment.author }}
(第4行),如果我提交新评论,查询会减少到固定数字。如何优化这个?
注意:comment.author
是django.contrib.auth.models.User
答案 0 :(得分:4)
我认为这是select_related的情况?
https://docs.djangoproject.com/en/dev/ref/models/querysets/#select-related