сериализовать список, оставаясь в другом сериализаторе - PullRequest
0 голосов
/ 24 апреля 2019

Это мой вывод, который должен выглядеть следующим образом:

{
    "status": 1,
    "errors": "",
    "results": [
        {
            "car_type": "sedan",
            "is_active": true,
            "company": {
                ["tata","hyundai"]
            }
        }
    ]
}

И моя модель,

class CarType(CommonBase):
    car_type = models.TextField(null=True, blank=True)
    is_active = models.BooleanField(default=True)
    company = models.ManyToManyField('Company', null=True,
                                      blank=True)


class Company(CommonBase):
    company_name = models.TextField(null=True, blank=True)
    country = models.TextField(null=True, blank=True)

, как мне написать свой сериализатор для API get, который будет возвращать все типы автомобилей сis_active = True

1 Ответ

1 голос
/ 24 апреля 2019

Это

{
     "company": {[...]}
}

словарь в сериализации компании не имеет смысла, вместо того, что вы хотите, есть фактический список.

Сосредоточившись только на сериализации элементов в results, вы можете использовать сериализатор, например:

class CarTypeSerializer(serializers.ModelSerializer):
    company = serializers.SerializerMethodField()

    def get_company(self, obj):
        return [company.company_name for company in obj.company.all()]

    class Meta:
        model = CarType
        fields = ("car_type", "is_active", "company")

, который выдаст результат как:

{
    "car_type": "Car type..",
    "is_active": true,
    "company": [
        "company 1",
        "company 2"
    ]
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...