def get(self, request, image_id, format=None): # likes = models.Like.objects.filter(image__id=image_id) # users = user_models.User.objects.filter(id__in=likes.values('creator_id')) users = user_models.User.objects.filter(like__image=image_id) serializer = user_serializers.ListUserSerializer(users, many=True) return Response(status=status.HTTP_200_OK, data=serializer.data)
class NotificationSerializer(serializers.ModelSerializer): creator = user_serializers.ListUserSerializer() image = image_serializers.SmallImageSerializer() class Meta: model = models.Notification fields = '__all__'
class NotificationSerializer(serializers.ModelSerializer): creator = user_serializers.ListUserSerializer() image = image_serializers.SmallImageSerializer() class Meta: model = models.Notification fields = ('id', 'creator', 'created_at', 'updated_at', 'notification_type', 'image', 'to')
class NotificationSerializer(serializers.ModelSerializer): creator = user_serializers.ListUserSerializer() image = image_serializers.SmallImageSerializer() class Meta: model = models.Notifications fields = ('id', 'creator', 'image', 'notification_type', 'comment', 'to', 'natural_time')
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=200)
def get(self, request, image_id, format=None): likes = models.Like.objects.filter(image__id=image_id) like_creator_ids = likes.values('creator_id') # -> https://docs.djangoproject.com/ko/2.1/ref/models/querysets/#django.db.models.query.QuerySet.values users = user_models.User.objects.filter(id__in=like_creator_ids) # -> 누가 이 이미지를 '좋아요' 했는지가 궁금해! serializer = user_serializers.ListUserSerializer(users, many=True) return Response(data=serializer.data, status=status.HTTP_200_OK)
def get(self, request, image_id, format=None): likes = models.Like.objects.filter(image__id=image_id) # __는 여기서 like의 id가 아닌 image 오브젝트 안에 있다는 것을 의미함 # 그냥 image_id의 _는 그냥 변수 이름의 일부이다. 우리 개발자가 임의로 작성한 # 여기까지는 그냥 좋아요 리스트를 알 수 있다. 그리고 like.values()로 id를 포함한 내부 정보를 추출할 수 있다. like_creators_ids = likes.values('creator_id') users = user_models.User.objects.filter(id__in=like_creators_ids) # __in은 "__in=array"이란 형태에서 array의 요소를 하나하나 '='(같은지) 체크해준다. 일종의 반복문으로 길게 쓸것을 줄이는 개념이다. # 즉 여기서는 id 하나와 여러개의 id를 가진 array인 like_creators_ids를 각각 비교해준다,. serializer = user_serializers.ListUserSerializer(users, many=True) return Response(data=serializer.data, status=status.HTTP_200_OK)
def get(self, request, image_id, format=None): likes = models.Like.objects.filter(image__id=image_id) likes_creators_ids = likes.values('creator_id') # likes_creators_ids 안에 있는 id를 찾기 위해 id__in 이라고 함 users = user_models.User.objects.filter(id__in=likes_creators_ids) serializer = user_serializers.ListUserSerializer(users, many=True, context={'request': request}) return Response(data=serializer.data, status=status.HTTP_200_OK)
def get(self, request, image_id, format=None): """image_id의 image를 좋아요한 유저 리스트를 보여준다.""" likes = models.Like.objects.filter(image__id=image_id) #print(likes.values()) # [values()] https://docs.djangoproject.com/en/2.2/ref/models/querysets/#values like_creators_ids = likes.values('creator_id') # like object들의 creator의 id 리스트를 뽑음 like_creators = user_models.User.objects.filter(id__in=like_creators_ids) # array를 돌면서 user object filter serializer = user_serializers.ListUserSerializer(like_creators, many=True) return Response(data=serializer.data, status=status.HTTP_200_OK)
def get(self, request, image_id, fortmat=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) # id__in means 'Search user_id in array' serializer = user_serializers.ListUserSerializer(users, many=True) return Response(data=serializer.data, status=status.HTTP_200_OK)
def get(self, request, image_id, format=None): likes = models.Like.objects.filter(image__id=image_id) # 찾고 싶은 값이 있으면 values로해서 찾고 그 안에 key값으로 원하는 값을 가질 수 있다. like_creator_ids = likes.values('creator_id') users = user_models.User.objects.filter(id__in=like_creator_ids) serializer = user_serializers.ListUserSerializer( users, many=True, context={"request": request}) return Response(data=serializer.data, status=status.HTTP_200_OK)
def get(self, request, image_id, format=None): user = request.user likes = models.Like.objects.filter(image__id=image_id) creator_ids = likes.values('creator_id') creators = user_models.User.objects.filter(id__in=creator_ids) if likes.count() == 0: return Response(status=status.HTTP_404_NOT_FOUND) serializer = user_serializers.ListUserSerializer(creators, many=True) return Response(serializer.data, status=status.HTTP_200_OK)
def get(self, request, image_id, format=None): likes = models.Like.objects.filter(image__id=image_id) like_creators_ids = likes.values('creator_id') # likes를 생성한 user 를 usermodel안에서 찾는다. # print(likes.values('creator_id')) # 해당 list의 내부의 값도 볼 수가 있다. users = user_models.User.objects.filter(id__in=like_creators_ids) # array 안에 있는 user id를 검색한다. serializer = user_serializers.ListUserSerializer( users, many=True, context={'request': request}) return Response(data=serializer.data, status=status.HTTP_200_OK)
def get(self, request, image_id, format=None): try: likes = models.Like.objects.filter(image__id=image_id) except ObjectDoesNotExist: return Response(status=status.HTTP_404_NOT_FOUND) like_creator_id = likes.values('creator_id') users = user_model.User.objects.filter(id__in=like_creator_id).exclude( id=request.user.id) serializer = user_serializer.ListUserSerializer( users, many=True, context={'request': request}) return Response(data=serializer.data, status=status.HTTP_200_OK)
def get(self, request, image_id, format=None): print('좋아요') # 좋아요 누른 사람 싹 긁어오고 likes = models.Like.objects.filter(image__id=image_id) # 그 중 아이디를 가져와서 like_creaters_ids = likes.values('creater_id') #필터로 걸러서 가져와서 users = user_models.User.objects.filter(id__in=like_creaters_ids) # 시리얼라이저로 보여줄 값 정의해주기 serializer = user_serializers.ListUserSerializer( users, many=True, context={'request': request}) return Response(data=serializer.data, status=status.HTTP_200_OK)
def get(self, request, image_id, format=None): likes = models.Like.objects.filter(image__id=image_id) # 1. 해당글의 likes 인원 조회 print(likes) # 2. 좋아요를 만든 유저들의 리스트를 생성 print(likes.values('creator_id')) like_creator_ids = likes.values('creator_id') # 3. 유저 모델에서 해당 유저리스트의 유저 정보를 조회 users = user_model.User.objects.filter(id__in=like_creator_ids) serializer = user_serializers.ListUserSerializer( users, many=True, context={"request": request}) return Response(data=serializer.data, status=status.HTTP_200_OK) print(users)