class FavoriteSerializer(serializers.ModelSerializer): tweet = TweetSerializer(read_only=True) user = AccountSerializer(read_only=True) class Meta: model = Favorite fields = ('id', 'tweet', 'user', 'created_at')
class TweetSerializer(serializers.ModelSerializer): user = AccountSerializer() favorited_user = FavoriteUserSerializer(source='favorited_tweet', many=True, read_only=True) parent = ParentTweetSerializer(many=True, source='child_tweet') children = ChildTweetSerializer(many=True, source='parent_tweet') class Meta: model = Tweet fields = ('id', 'tweet', 'user', 'favorited_user', 'parent', 'children', 'created_at')
def get(self, request, format=None): login_user = self.queryset\ .get(email=self.request.user) serializer = AccountSerializer(login_user) return Response(data={ 'id': serializer.data['id'], 'username': serializer.data['username'], 'email': serializer.data['email'], 'profile': serializer.data['profile'], 'follow_list': serializer.data['follows'], 'follower_list': serializer.data['followers'], 'favorite_tweet': serializer.data['favorite_tweet'] }, status=status.HTTP_200_OK)
def get(self, request, user_id): try: user = Account.objects.get(id=user_id) except Account.DoesNotExist: raise Http404 serializer = AccountSerializer(user) return Response(data={ 'id': serializer.data['id'], 'username': serializer.data['username'], 'email': serializer.data['email'], 'profile': serializer.data['profile'], 'follows': serializer.data['follows'], 'followers': serializer.data['followers'], 'favorite_tweets': serializer.data['favorite_tweets'] }, status=status.HTTP_200_OK)
def post(self, request, format=None): serializer = AccountSerializer(data=request.data) if serializer.is_valid(): serializer.save() return Response(serializer.data, status=status.HTTP_201_CREATED) return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)
class TweetPostSerializer(serializers.ModelSerializer): user = AccountSerializer() class Meta: model = Tweet fields = ('tweet', 'user')
class FavoriteUserSerializer(serializers.ModelSerializer): user = AccountSerializer(read_only=True) class Meta: model = Favorite fields = ('id', 'user')
class TweetMinimumSerializer(serializers.ModelSerializer): user = AccountSerializer() class Meta: model = Tweet fields = ('id', 'tweet', 'user', 'created_at')