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 |