0

投稿のリストを返すエンドポイントを作成しようとしています。ページごとに 2 つの投稿があるとしましょう (テストのみです! 問題が発生するほど大きな数ではないことはわかっています!)。ここに私の views.pyがあります

class blogsViewSet(ModelViewSet):
    queryset = Posts.objects.all()
    serializer_class = PostSerializer
    pagination_class = pagination.CustomPagination

    
    def list(self, request):
        data = request.data
        uid = data['uid']
        context = {"user": uid}
        blogs = Posts.objects.all()
        serializer = PostSerializer(blogs, many= True, context= context)
        return Response(serializer.data)

ここに私の serializers.pyがあります

class PostSerializer(ModelSerializer):    
    isLiked = serializers.SerializerMethodField(method_name='check_react')
    totalLikes = serializers.SerializerMethodField(method_name='get_likes')
    totalComments = serializers.SerializerMethodField(method_name='get_comments')

    def check_react(self, post):
        userObj = Users.objects.get(userID = self.context['user'])
        #print(type(userObj))
        
        if Likes.objects.filter(postID = post, userID = userObj).exists():
            isLiked = Likes.objects.get(postID = post, userID = userObj)
            likeObj = LikeSerializer(isLiked)
            #print('isLiked: ', likeObj.data['isLiked'])
            return (likeObj.data['isLiked'])
        return(False)
        #print(isLiked)
    
    def get_likes(self, post):
        count = Likes.objects.filter(postID = post).count()
        return count

    def get_comments(self, post):
        count = PostsComments.objects.filter(postID = post).count()
        return count

    class Meta:
        model = Posts
        fields = '__all__'

そして、ここに私の pagination.py

from rest_framework import pagination

class CustomPagination(pagination.PageNumberPagination):
    page_size = 2
    page_size_query_param = 'page_size'
    max_page_size = 3
    page_query_param = 'p'

このクラスを views.py にインポートしていますが、userMVSを介してユーザーのリストを取得しようとすると、期待どおりに動作します

class userMVS(ModelViewSet):
    queryset = Users.objects.all()
    serializer_class = UserSerializer
    pagination_class = pagination.CustomPagination
4

1 に答える 1