Django API Query - PullRequest
       5

Django API Query

0 голосов
/ 03 октября 2019

У меня есть модель Mobiles с 2 полями: метки и цена

Я пытаюсь выяснить, как передать поля этой модели в представление

и сериализовать их


serializers.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"
    ]
}

Спасибо за любую помощь !!

1 Ответ

0 голосов
/ 03 октября 2019

Вы можете сделать это:

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

Но я могу только предупредить вас обо всем проекте - «параллельные списки» (два или более списков, совпадающие по позиции) - верный рецепт хрупкого кода (еслилюбой список в любом случае изменяется, тогда позиции больше не совпадают, и ваши данные безвозвратно повреждены). Список {"label", "price"} диктов безопаснее, и если клиентский код хочет построить параллельные списки, он МОЖЕТ сделать это из этого списка диктов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...