为了账号安全,请及时绑定邮箱和手机立即绑定

serializer 调用显示 TypeError: Object of type

serializer 调用显示 TypeError: Object of type

绝地无双 2021-10-19 15:02:37
我试图在 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 Membersclass MemberSerializers(serializers.HyperlinkedModelSerializer):    class Meta:        model = Members        fields = ('username', 'fullname', 'phone','address','memberid')        # exclude = ['']    passMemberMixins 代码如下: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
查看完整描述

1 回答

?
喵喵时光机

TA贡献1846条经验 获得超7个赞

问题是您将序列化程序本身而不是序列化数据发送到响应。您应该将其更改为:

self.data = objects.data

但这就是说,大部分代码是完全没有必要的,您已经绕过了 Django 和 DRF 为您所做的大部分 .he 事情。删除您的 mixin 并使用 ListAPIView。


查看完整回答
反对 回复 2021-10-19
  • 1 回答
  • 0 关注
  • 209 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号