[Django/select_related와 prefetch_related]

SooYeon Yeon·2022년 6월 26일
0

Django

목록 보기
9/20

web 만들기에서 게시물 조회했을 때 그 게시물의 댓글들을 모두 보여주려고 함

2가지 방법이 있음

# select_related : 댓글을 뽑으려하는데 댓글과 관련된 게시물을 뽑으려할 때 (Reply모델에 post가 있으면 정방향)
# prefetch_related : 게시글에 대한 모델  (post로 갔는데 댓글이 없는데, 댓글 조회하고 싶으면 역방향이라고 함)

selected_related : 조인, 해당 모델 안에 뽑아오려는 게 있는 정방향

prefetch_related : 쿼리를 2번 실행, 해당 모델 안에 뽑아오려는 게 없으면 역방향

여기서는 게시물(Post)를 조회했을 때, 댓글을 보여줘야하는데 Post모델 안에 댓글이 없기 때문에 prefetch_related를 사용함

view에서 사용

post = Post.objects.prefetch_related('reply_set').get(id=bid)

html에서 사용

{% for reply in post.reply_set.all %}
    {{ reply.contents }} <br>
{% endfor %}

0개의 댓글