본문 바로가기

BackEnd/Django

[Django] 좋아요 리스트 보기

class LikeImage(APIView):

def post(self, request , image_id , format=None):

user = request.user

try :
found_image = models.Image.objects.get(id=image_id)
except models.Image.DoesNotExist:
return Response(status=status.HTTP_204_NO_CONTENT)

try:
preexisting_like = models.Like.objects.get(
creator = user,
image=found_image
)

return Response(status=status.HTTP_304_NOT_MODIFIED)
except :
new_like = models.Like.objects.create(
creator = user,
image = found_image
)

notification_views.create_notification(
user, found_image.creator, 'like', found_image)

new_like.save()
return Response(status=status.HTTP_201_CREATED)


기존의 좋아요 API는 POST고 좋아요를 하는 기능이였음


근데 누가 이 이미지에 좋아요를 했는지 리스트를 뽑아보기로 함!


새로 이것저것 추가할 필요 없이


class LikeImage(APIView):

def get(self, request, image_id, format=None):

likes = models.Like.objects.filter(image__id=image_id)

like_creators_ids = likes.values('creator_id')

users = user_models.User.objects.filter(id__in=like_creators_ids)

serializer = user_serializers.ListUserSerializer(users, many=True)

return Response(data=serializer.data, status=status.HTTP_200_OK)


def post(self, request , image_id , format=None):

user = request.user

try :
found_image = models.Image.objects.get(id=image_id)
except models.Image.DoesNotExist:
return Response(status=status.HTTP_204_NO_CONTENT)

try:
preexisting_like = models.Like.objects.get(
creator = user,
image=found_image
)

return Response(status=status.HTTP_304_NOT_MODIFIED)
except :
new_like = models.Like.objects.create(
creator = user,
image = found_image
)

notification_views.create_notification(
user, found_image.creator, 'like', found_image)

new_like.save()
return Response(status=status.HTTP_201_CREATED)


요로코롬 새로 get방식을 추가했음


차근차근 살펴보자


일단


likes에다 image__id(이미지에 있는 아이디)와 URL이 일치하는 값을 잡아 넣을거임!


그리고


like_creators_ids는 likes의 value값중에 creator_id를 뽑아 올건데


좋아요의 생성자 => 좋아요를 한사람 이니까


like.value를 출력하면 다음과 같음


정신없는 쿼리셋인데 이 중에 creator_id가 있음을 확인 할 수 있음!!


like_creators_ids에 담은 값은




이러함


그리고 그 값과 user 오브젝트에서 id가 일치하다면 그 유저 오브젝트값을


users에 담을거임



출력하면 다음과 같은 유저리스트가 나옴!


그리고 시리얼라이징!








'BackEnd > Django' 카테고리의 다른 글

[Django] 이미지 삭제하기  (0) 2018.11.08
[Django] 이미지 수정하기!  (0) 2018.11.07
[Django]단일 이미지 보기  (0) 2018.11.07
[Django]내 이미지 댓글 지우기 [질문중]  (0) 2018.11.07
[Django]Notification API2  (0) 2018.11.07