TIL(22.12.05) - Django annotate

이지영·2022년 12월 5일
0

TIL/WIL

목록 보기
82/110

장소에 대한 리뷰의 좋아요가 많은 순으로 정렬하기

에러내용

#좋아요순
like_count_review = Review.objects.filter(place_id=place_id).annotate(num_likes=Count('review_like')).order_by('-num_likes','-created_at')

recent_review_serializer = ReviewListSerializer(recent_review, many=True).data
like_count_review_serializer = ReviewListSerializer(like_count_review, many=True).data

review = {
	"recent_review": recent_review_serializer,
    "like_count_review": like_count_review_serializer
}
return Response(review, status=status.HTTP_200_OK)

.annotate(num_likes=Count('review_like')).order_by('-num_likes','-created_at')
-> review_like를 Count 함수를 이용해 개수를 세워 '-num_likes'(좋아요가 많은 순)으로 정렬하고 개수가 동일할 시 '-created_at'(리뷰 작성 날짜 최신순)으로 정렬한다.


추가로 알아두기
ORM 쿼리 최적화 (select_related, annotate, aggregates)
참고
annotate aggregate

profile
🐶🦶📏

1개의 댓글

comment-user-thumbnail
2022년 12월 6일

예...

답글 달기