728x90
TIL
📌
오늘 한 일
최종 프로젝트
오늘도 하루 종일 프로젝트를 했다.
리뷰 삭제, 리뷰 crud swagger 추가, 장소 리뷰 리스트 조회 최신순, 좋아요 카운트 순 추가,
리뷰 전체 조회 최신순 좋아요 카운트 순 추가 이 기능들을 추가하고 끝이 났다.
제일 힘들었던 부분이 좋아요카운트순으로 출력하는 부분이었다.
이 부분은 팀원과 5시부터 10시까지 한 거 같음 ㅎㅎ
구글링 하면서 여러 가지 방법을 사용해 봤는데 좋아요 카운트 순으로 출력이 되지 않아서
고민 끝에 튜터님께 질문하러 갔다.
튜터님께서 Count()를 사용해서 해보라고 하셨다. 이 방법도 해봤는데 안됐었는데
튜터님께서 자료를 주시면서 따라 해 보라고 하셨다. 주신 자료로 해보니 정상작동...
흠... 왜 내가 할 땐 안됐을까 구글링 하는 방법이 차원이 다르구나...라는 생각을 했음
튜터님 덕분에 기능이 잘 구현돼서 깃 푸시하고 오늘 할 일 끝.
study
json파일 db에 로드하는 방법
python manage.py loaddata 'json파일 경로'
좋아요 cnt 정렬
#models.py
review_like = models.ManyToManyField(User, verbose_name='후기 좋아요', related_name="like_review", blank=True)
#urls.py
path('review_rank/',views.ReviewRankView.as_view(), name='reveiw_rank_view'),
#views.py
from django.db.models import Count
def get(self, request, place_id):
like_count_review = Review.objects.filter(place_id=place_id).annotate(num_likes=Count('review_like')).order_by('-num_likes','-created_at')
#annotate() 사용해서 review_like를 참조한 새로운 num_likes 필드를 생성,
#Count()를 사용해서 review_like 데이터 개수를 세줌
#order_by로 개수를 내림차순으로 정렬해주고, 같은 개수가 있을 시 생성시간 내림차순으로 정렬을 한번 더 해줌
like_count_review_serializer = ReviewListSerializer(like_count_review, many=True).data
review = {
"like_count_review": like_count_review_serializer,
}
return Response(review, status=status.HTTP_200_OK)
annotate를 사용해서 새로운 요소를 데이터쿼리에 추가해주고
Count()를 사용해서 요소 데이터가 몇 개 있는지 확인해줌
annotate() 사용 이유 : ex) 책 목록을 검색하는 경우 각 책에 기여한 저자 수를 알고 싶을 경우
여기선 review_like를 통해서 like count를 알고 싶기 때문에 사용
어려우면 아래 링크를 한번 참고해보자❗
https://docs.djangoproject.com/en/4.1/topics/db/aggregation/
728x90
'내일배움캠프' 카테고리의 다른 글
85. 내일배움캠프 - 68일차 TIL (0) | 2022.12.08 |
---|---|
84. 내일배움캠프 - 67일차 TIL (0) | 2022.12.07 |
82. 내일배움캠프 - 14주차 WIL (2) | 2022.12.05 |
81. 내일배움캠프 - 65일차 TIL (0) | 2022.12.02 |
80. 내일배움캠프 - 64일차 TIL (1) | 2022.12.01 |
댓글