У меня есть страница, где пользователи могут видеть список комментариев для определенного продукта.
В представлении я получаю список с:
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
- это ForeignKey для django.contrib.auth.models.User