• 카테고리

    질문 & 답변
  • 세부 분야

    풀스택

  • 해결 여부

    미해결

좋아요 개수 올리기 관련 질문입니다

24.03.29 19:13 작성 24.03.29 19:15 수정 조회수 81

1

수업내용을 따라가다가 좋아요 개수가 올라가지 않아서

맨아래와 코드와 같이 고쳤더니 좋아요가 올라갔습니다. 기존코드(주석된 것)와 같이

likes_dict = get_likes_dict(melon_uid_list)  # id와 좋아요 개수가 dict로 뜸

이부분에서 likes_dict 를 쓰신 이유가 궁금합니다.

그리고 if song.like_count != likes_dict.get(song.melon_uid)

이부분은 당연히 같은거라서 if문이 실행이 될수가 없지 않나요?

    # 액션
    def update_like_count(self, request, queryset):
        melon_uid_list = queryset.values_list("melon_uid", flat=True)
        likes_dict = get_likes_dict(melon_uid_list)  # id와 좋아요 개수가 dict로 뜸

        changed_count = 0
        for song in queryset:
            song.like_count += 1

            # 기존 코드
            # if song.like_count != likes_dict.get(song.melon_uid):
            #     song.like_count = likes_dict.get(song.melon_uid)
            #     changed_count += 1

        Song.objects.bulk_update(
            queryset,
            fields=["like_count"],
        )
        self.message_user(request, message=f"{changed_count}개 곡의 좋아요 갱신 완료")

답변 1

답변을 작성해보세요.

0

안녕하세요.

구현한 기능은 멜론 사이트에서의 해당 곡의 좋아요 수를 크롤링해서 최신 데이터를 반영하는 기능입니다.

그러니, 해당 기능을 수행하실때 멜론 사이트에서 좋아요 수의 변화가 없다면 변경되지 않습니다. // 기능 실행 시마다 좋아요 수가 무조건 +1 이 되어서는 안 됩니다.

likes_dict 사전에는 각 곡의 멜론 사이트에서의 최신 좋아요 수가 저장되어있습니다. if 조건절을 통해, 좋아요 수의 변화가 있는 곡만 체크해서 좋아요 수가 변경된 곡의 수를 changed_count 를 통해 카운트했습니다.

meyou1218님의 프로필

meyou1218

질문자

2024.03.30

아하 이해했습니다. 감사합니다!