Python 如何序列化对象列表?

Python 如何序列化对象列表?,python,django,django-rest-framework,Python,Django,Django Rest Framework,Django Rest Framework文档()提供了以下序列化对象列表的示例: queryset = Book.objects.all() serializer = BookSerializer(queryset, many=True) serializer.data 我尝试使用以下代码执行类似操作: @api_view(['GET']) def postComments(request, pk): """ Retrieve all comments with origin

Django Rest Framework文档()提供了以下序列化对象列表的示例:

queryset = Book.objects.all()
serializer = BookSerializer(queryset, many=True)
serializer.data
我尝试使用以下代码执行类似操作:

@api_view(['GET'])
def postComments(request, pk):
    """
    Retrieve all comments with originalPostId = pk.
    """
    if request.method == 'GET':
        comments = Comment.objects.all()
        comments = comments.filter(originalPostId = pk)
        serializer = CommentSerializer(comments, many=True)
        if serializer.is_valid():
            return Response(serializer.data)
        logger.error(serializer.errors)
但是,我立即得到以下错误:
AssertionError:cannotcall`.is_valid()`因为在实例化序列化程序实例时没有传递`data=`关键字参数。

另一篇文章()似乎解决了这个问题,但答案表明,在调用我的
CommentSerializer
时输入
data=
将用于反序列化,而不是序列化,这不是我想要的

但是,当我使用行
serializer=CommentSerializer(data=comments,many=True)
运行时,我得到了错误
{'non_field_errors':[ErrorDetail(string='Expected a list of items,but get type“QuerySet.”,code='not_a_list')]

这是我的序列化程序,以防出现问题:

    poster = UserSerializer()
    community = CommunitySerializer()
    originalPost = PostSerializer()
    class Meta:
        model = Comment
        fields = ['post', 'community', 'poster', 'originalPost', 'originalPostId']

    def create(self, validated_data):
        userData = validated_data.pop('poster')
        user = User.objects.get_or_create(username=userData['username'],
                                                       email=userData['email'],
                                                       first_name=userData['first_name'],
                                                       last_name=userData['last_name'],
                                                       password=userData['password'])[0]
        validated_data['poster'] = user
        communityData = validated_data.pop('community')
        community = Community.objects.get_or_create(name=communityData['name'])[0]
        validated_data['community'] = community

        originalPostData = validated_data.pop('originalPost')
        originalPost = Post.objects.get_or_create(id = validated_data['originalPostId'])[0]
        validated_data['originalPost'] = originalPost

        comment = Comment.objects.create(**validated_data)
        return comment```

摆脱
是有效的()
检查使其工作。我想我只需要相信自己~

是有效的,用于验证用户输入数据,所以不需要调用是有效的

@api_view(['GET'])
def postComments(request, pk):
    """
    Retrieve all comments with originalPostId = pk.
    """
    if request.method == 'GET':
        comments = Comment.objects.filter(originalPostId = pk).all()
        serializer = CommentSerializer(comments, many=True)
        return Response(serializer.data)
@api_view(['GET'])
def postComments(request, pk):
    """
    Retrieve all comments with originalPostId = pk.
    """
    if request.method == 'GET':
        comments = Comment.objects.filter(originalPostId = pk).all()
        serializer = CommentSerializer(comments, many=True)
        return Response(serializer.data)