如何在Django中序列化Queryset.values



假设,我有一个查询:

qs = demo.objects.filter(id=id).values_list('name','price')

我有一个序列化程序:

Class DemoSerialzier(serialzier.Modelserialzier):
class Meta:
model = Demo
fields = ['name','price']

如何序列化qs?当我通过序列化程序传递qs时,它会给出AttributeError。Django试图在序列化程序上查找字段,而元组对象没有属性"name"。

因为values_list方法返回元组列表,而序列化程序正在查找对象。如果希望使用values_list而不是序列化程序,则可以将values_list结果直接传递给响应。

import itertools
# This will return list of tuples.
# To make it flat we have to use itertools chain.
qs = demo.objects.filter(id=id).values_list('name','price')
qs = list(itertools.chain(*qs)
return Response(qs)

最新更新