[英]How to restructuring the data by the data's property in Django-Rest-Framework?
我有一个磁盘序列化程序,下面是我的磁盘序列化程序:
class DiskSerializer(ModelSerializer):
diskessencetype_name = serializers.ReadOnlyField(source='diskEssenceType.name')
diskostype_name = serializers.ReadOnlyField(source='diskOsType.name')
class Meta:
model = Disk
fields = [
"id",
"price",
"diskessencetype_name",
"diskostype_name",
]
该views.py是在下面:
class DiskListAPIView(ListAPIView):
serializer_class = DiskSerializer
permission_classes = []
queryset = Disk.objects.all()
然后生成如下所示的数据:
[
{
"id": 4,
"price": "5.00",
"diskessencetype_name": "ssd",
"diskostype_name": "系统盘"
},
{
"id": 5,
"price": "6.00",
"diskessencetype_name": "sas",
"diskostype_name": "系统盘"
},
{
"id": 6,
"price": "5.00",
"diskessencetype_name": "sas",
"diskostype_name": "数据盘"
},
{
"id": 7,
"price": "6.00",
"diskessencetype_name": "sas",
"diskostype_name": "系统盘"
},
{
"id": 8,
"price": "6.00",
"diskessencetype_name": "sas",
"diskostype_name": "系统盘"
},
.....
]
但是我想搜索和约束以下数据:
{
"系统盘":[{"id":5, "diskessencetype_name":"sas", "price":5.00},.....]
"数据盘":[{"id":7, "diskessencetype_name":"ssd", "price":7.00},.....]
}
您会看到,它们是通过实例的属性( diskostype_name
)进行重组的,是否有内置方法来实现它?
我该如何重建它们?
views.py
class Postlar(ListAPIView):
permission_classes = []
queryset = Disk.objects.all()
serializer_class = DiskSerializer
def list(self, request, *args, **kwargs):
result = {}
SerializerClass = self.get_serializer_class()
for u in ["系统盘", "数据盘"]:
serializer = SerializerClass(Disk.objects.filter(diskOsType__name=u), many=True)
result[u] = serializer.data
return Response(result)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.