오늘 최적화의 핵심
=> 한번에 잘 가져오자 !
(문제의 원인)
각 게시글마다 댓글의 개수를 반복해서 가져오게 되는 것
# index_1.html
<p> 댓글개수 : {{ article.comment_set.count }} </p>
(해결방법)
annotate 사용하기
게시글을 조회하면서 댓글의 개수까지 한번에 조회해서 가져오기
# articles > views.py
def index_1(request):
# articles = Article.objects.order_by('-pk')
articles = Article.objects.annotate(Count('comment')).order_by('-pk')
context = {
'articles': articles,
}
return render(request, 'articles/index_1.html', context)
* annotate
SQL의 GROUP BY를 사용한다
아예 게시글을 가져오면서, 각각의 게시글에 작성된 댓글의 count 컬럼을 한번에 가져온다
그룹을 지어서
'WEB > Django prac' 카테고리의 다른 글
[Django prac][Improve query] 5. 최적화 (0) | 2024.04.13 |
---|---|
[Django prac][Improve query] 4. 최적화 (0) | 2024.04.12 |
[Django prac][Improve query] 2. 최적화 (0) | 2024.04.12 |
[Django prac][Improve query] 1. 최적화 (0) | 2024.04.12 |
[Django prac][Fixtures] 3. json 파일로 만들었던 데이터 불러오기 (0) | 2024.04.12 |