我试图在 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。
添加回答
举报
0/150
提交
取消