2011-07-18 31 views
1

我有一个页面,用户可以看到特定产品的评论列表。优化Django查询

在视图中我得到的名单有:

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行),则查询数减少到固定数,如果我提交新评论。如何优化这个?

NB:comment.author是一个ForeignKey到django.contrib.auth.models.User

+0

我不知道,你需要担心这种优化,除非你希望对每个产品评论100的或1000年。当你做这个查询时,你觉得得到这10条评论需要很长时间吗? – Luke

回答