0
我环顾了过去几天,无法找到一个好办法来做到这一点。我发现了一些其他的线程,但似乎没有任何工作需要它的方式。Django-rest-framework序列化多个查询,但没有相关的字段
这里是问题:我想能够序列化多个查询的结果以返回给用户,以便他们不必在多个端点连接到API,因此服务器可以完成所有重必要时起吊。
我使用APIView和view.py中的获取请求。
我已经尝试从itertools使用链,但我似乎无法以任何方式访问串行器中的数据。我试过传递一个包含两个查询结果的字典,但似乎也没有工作。
有可能是一个非常简单的方法来解决这个问题,但我似乎无法找到任何文档。
这是代码的简化一块这样的人很容易回答:
views.py
class ModelOutputList(APIView):
def get(self, request):
data = self.get_queryset()
serializer = ModelOutputSerializer(
data,
many=True
)
return Response(serializer.data)
def get_queryset(self):
model1 = Model1.objects.all()
model2 = Model2.objects.all()
data = list(itertools.chain(model1, model2))
return data
serializers.py
class ModelOutputSerializer(serializers.Serializer):
model1 = Model1Serializer(many=True)
model2 = Model2Serializer(many=True)
class Meta:
fields = ('model1', 'model2')
与往常一样,任何帮助将不胜感激。
Woops我没有看到编辑的views.py我现在会检查。谢谢。 – prawg
我得到以下错误: 尝试获取序列化器'Model1Serializer'上字段'model1'的值时出现AttributeError。 序列化程序字段可能命名错误,并且不匹配'str'实例上的任何属性或键。 原始异常文本是:'str'对象没有属性'model1'。 – prawg
这将在浏览器中输出正确的json。 AttributeError必须从其他代码中引发。 – JimmyYe