首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何通过Django-Rest-Framework中的数据属性对数据进行重构?

如何通过Django-Rest-Framework中的数据属性对数据进行重构?
EN

Stack Overflow用户
提问于 2017-11-17 10:08:25
回答 1查看 116关注 0票数 0

我有一个磁盘序列化程序,我的磁盘序列化程序如下:

代码语言:javascript
运行
复制
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是这样的:

代码语言:javascript
运行
复制
class DiskListAPIView(ListAPIView):
    serializer_class = DiskSerializer
    permission_classes = []
    queryset = Disk.objects.all()

产生的数据如下:

代码语言:javascript
运行
复制
[
    {
        "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": "系统盘"
    },
  .....
  ]

但我想找出以下数据的限制和限制:

代码语言:javascript
运行
复制
{
    "系统盘":[{"id":5, "diskessencetype_name":"sas", "price":5.00},.....]
    "数据盘":[{"id":7, "diskessencetype_name":"ssd", "price":7.00},.....]
}

您知道,它们是通过实例的属性(diskostype_name)进行重构的,是否有一个内建方法来实现它呢?

我怎样才能重建它们?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-11-17 11:05:06

views.py

代码语言:javascript
运行
复制
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)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47348091

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档