serializer 调用显示 TypeError: Object of type

我试图在 django GET 请求中调用序列化程序,但它显示了一个类型错误:“ListSerializer”类型的对象不是 JSON 可序列化的如果我在某个地方出错,请帮助我。提前致谢。


class Member(MemberMixin, APIView):


        serializer_class = MemberSerializers


        def get(self, request, format=None):

            objects = MemberSerializers(Members.objects.all(), many=True)

            self.meta_data = "GET"

            self.module = "Member"

            self.data = objects

            if objects is None:

                self.error = "datas are not found"

                return Response(self.response_obj, status=status.HTTP_404_NOT_FOUND)

            else:

                return Response(self.response_obj, status=status.HTTP_200_OK)

            pass

序列化器代码如下:


from .models import Members



class MemberSerializers(serializers.HyperlinkedModelSerializer):

    class Meta:

        model = Members

        fields = ('username', 'fullname', 'phone','address','memberid')

        # exclude = ['']

    pass

MemberMixins 代码如下:


class MemberMixin(object):

    meta_data = dict()

    data = dict()

    error = dict()


    def __init__(self):

        self.meta_data = dict()

        self.data = dict()

        self.error = dict()

        self.json_schema = None

        super().__init__()


    @property

    def response_obj(self):

        resp = dict()

        resp['meta'] = self.meta_data

        if self.error:

            resp['error'] = self.error

        else:

            resp['data'] = {

                'detail': self.data,

            }

        return resp


    pass


绝地无双
浏览 210回答 1
1回答

喵喵时光机

问题是您将序列化程序本身而不是序列化数据发送到响应。您应该将其更改为:self.data = objects.data但这就是说,大部分代码是完全没有必要的,您已经绕过了 Django 和 DRF 为您所做的大部分 .he 事情。删除您的 mixin 并使用 ListAPIView。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python