我有一個頁面,用戶可以看到特定產品的評論列表。優化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
我不知道,你需要擔心這種優化,除非你希望對每個產品評論100的或1000年。當你做這個查詢時,你覺得得到這10條評論需要很長時間嗎? – Luke