gpt4 book ai didi

python - 使用 Django Rest Framework 序列化查询集时的“ListSerializer”

转载 作者:行者123 更新时间:2023-11-28 21:47:24 28 4
gpt4 key购买 nike

我有一个稍微复杂的 APIView,这使得我不能使用通用的 ListAPIView返回一个查询集。但我似乎无法使用 ModelSerializer 简单地序列化一个简单的 Django 查询集,即使我设置了 many=True

不知何故这不起作用:

序列化程序.py:

class SomeModelSerializer(serializers.ModelSerializer):

class Meta:
model = SomeModel
fields = ['some_field']

views.py:

from rest_framework.response import Response

class SomeAPIView(APIView):
serializer_class = SomeInputSerializer

def post(self, request, format=None):
serializer = self.serializer_class(data=request.data)
if serializer.is_valid():
# first some business logic, then return results
results = SomeModel.objects.all()
output_serializer = SomeModelSerializer(results, many=True)
return Response(output_serializer.data)

我一直得到的是:'ListSerializer' object is not iterable

我做错了什么?

错误:

/projectfolder/venv/lib/python2.7/site-packages/django/template/defaulttags.py in render
try:
values = self.sequence.resolve(context, True)
except VariableDoesNotExist:
values = []
if values is None:
values = []
if not hasattr(values, '__len__'):
values = list(values) ...
len_values = len(values)
if len_values < 1:
return self.nodelist_empty.render(context)
nodelist = []
if self.is_reversed:
values = reversed(values)

values = list(values) 似乎是错误的原因

最佳答案

遇到了和你一样的问题。我找到了一个快速简单的错误修复方法:将序列化程序数据复制到一个新数组并返回它。

results = SomeModel.objects.all()

output_serializer = SomeModelSerializer(results, many=True)
data = output_serializer.data[:]

return Response(data)

这对我有用,希望对你也有用。

关于python - 使用 Django Rest Framework 序列化查询集时的“ListSerializer”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36577692/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com