我正在尝试在项目中集成对外部库的支持。外部库需要一个精确的数据结构,用于调用表即响应。
我的模型的一个简单序列化器可能是:
class BookSerializer(serializers.ModelSerializer):
class Meta:
model = Book
fields = ('id', 'title', 'author')
所以,假设这样的代码段:
queryset = Book.objects.all()
serializer = BookSerializer(queryset, many=True)
serializer.data
哪个输出如下:
[
{'id': 0, 'title': 'The electric kool-aid acid test', 'author': 'Tom Wolfe'},
{'id': 1, 'title': 'If this is a man', 'author': 'Primo Levi'},
{'id': 2, 'title': 'The wind-up bird chronicle', 'author': 'Haruki Murakami'}
]
如何重塑BookSerializer类以实现此结果?我不知道。
{
'id': [0, 1, 2],
'title': ['The electric kool-aid acid test', 'If this is a man', 'The wind-up bird chronicle'],
'author': ['Tom Wolfe', 'Primo Levi', 'Haruki Murakami']
}
答案 0 :(得分:0)
根据需要重写串行器的to_representation
以重塑输出字典的形状。 DRF没有这样的实用程序,但是您可以使用pandas轻松实现。例如:
import pandas as pd
def to_representation(self, instance):
data = super(BookSerializer, self).to_representation(instance)
df = pd.DataFrame(data=data)
reshaped_data = df.to_dict(orient='list')
return reshaped_data
请注意,如果您想将此序列化器用作视图的一部分,那么数据的形状将不起作用。