我有一个页面,用户可以看到特定产品的评论列表。
在视图中,我使用以下命令获取列表:
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
的ForeignKey
发布于 2011-07-18 21:41:34
我认为这是select_related的一个案例?
https://docs.djangoproject.com/en/dev/ref/models/querysets/#select-related
https://stackoverflow.com/questions/6739666
复制相似问题