0

我有一个名为 Mobiles 的模型,有 2 个字段:标签和价格

我试图找出如何将此模型的字段传递给视图

并将它们序列化


序列化程序.py

class DeviceSerializer(serializers.ModelSerializer):
class Meta:
    model = Mobiles
    fields = ['price']

class LabelSerializer(serializers.ModelSerializer):
class Meta:
    model = Mobiles
    fields = ['labels']

class ChartData(APIView):

def get(self,request,format=None):
    dataset = Mobiles.objects.all()
    serializer = DeviceSerializer(dataset,many=True)
    serializer2 = LabelSerializer(dataset,many=True)
    price = serializer.data 
    labels = serializer2.data  
    data = {
        "labels":labels,
        "price":price,
    }
    return Response(data)

这就是我得到的:

{
    "price": [
        {
            "price": 100
        },
        {
            "price": 101
        },
        {
            "price": 102
        }
    ],

 "labels": [
        {
            "labels": "A"
        },
        {
            "labels": "B"
        },
        {
            "labels": "C"
        }
    ]
}

但它应该是这样的:


{
    "price": [
        "100",
        "101",
        "102"
    ],
    "labels": [
        "A",
        "B",
        "C"
    ]
}

感谢您的任何帮助 !!

4

1 回答 1

0

你可以这样做:

data = {
    "labels":[item["labels"] for item in labels],
    "price":[item["price"] for item in price],
}

但我只能警告你整个设计 - “并行列表”(两个或多个在位置上匹配的列表)肯定是脆弱代码的秘诀(如果任何列表无论如何都改变了,那么位置就不再匹配了并且您的数据已无法修复)。dicts列表{"label", "price"}更安全,如果客户端代码想要构建并行列表,那么它可以从这个 dicts 列表中完成。

于 2019-10-03T11:10:11.570 回答