작성
·
187
·
수정됨
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 를 통해 카운트했습니다.
아하 이해했습니다. 감사합니다!