-
[Django] N:M 관계에서 order_by 사용시 duplicate 오류Django 개발 2022. 11. 29. 14:57
N:M 관계를 가진 여러 테이블을 거쳐 정렬을 해야할 때, queryset 결과가 중복되는 이슈를 발견했다. 해당 문제는 distinct()로는 해결하기 어렵기 때문에 다른 접근 방식이 필요하다.
예시 코드
예를 들어 후기에 연결된 주문서의 제품 중 후기 이벤트가 진행중이라면 상위에 노출시키고 싶어서 아래 코드처럼 쿼리를 짤 경우 총 개수는 일치하지만 같은 후기가 여러 개 반환된다.
Review.objects.all().order_by('order__products__review_events')
이 때, 해결 방법은 annotate를 사용하여 Max로 묶어주면 된다.
Review.objects.all().annotate(review_event=Max('order__products__review_events')).order_by('review_event')
참고한 글
반응형'Django 개발' 카테고리의 다른 글
[Django] Boto3 사용하여 AWS DynamoDB query하기 (0) 2023.03.13 [Pycharm]디버깅 No such file or directory 오류 해결 (0) 2022.05.20 [Docker] No such file or directory: 'docker' 오류 해결 (0) 2022.04.25 [Django] DRF jwt 인증방식을 이용한 로그인, 회원가입 구현하기 (0) 2022.03.28 [Django] postman 로그인 API CSRF token missing 오류 해결 (1) 2022.02.21