2011-07-18 113 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

回答