настройка сериализованного объекта в Django - PullRequest
0 голосов
/ 04 декабря 2018

у меня есть ответ для API,

 "mailinglist": [
        {
            "id": 690,
            "name": "Donotdelete",
            "count": "3",
            "mailing_list": 109,
            "person": [
                {
                    "id": 939,
                    "first_name": "Aladdin",
                    "last_name": "Abdul",
                    "email": "aladdin@sharklasers.com",
                    "mailinglist_id": 109
                }
            ]
        },
        {
            "id": 691,
            "name": "Donotdelete",
            "count": "3",
            "mailing_list": 109,
            "person": [
                {
                    "id": 938,
                    "first_name": "smitha",
                    "last_name": "sraj",
                    "email": "smithasraj.kp@gmail.com",
                    "mailinglist_id": 109
                }
            ]
        }
    ]

с использованием метода вложенного сериализатора. Но мне нужно изменить этот ответ на

"mailinglist": [
        {
            "id": 690,
            "name": "Donotdelete",
            "count": "3",
            "mailing_list": 109,
            "person": [
                {
                    "id": 938,
                "first_name": "smitha",
                "last_name": "sraj",
                "email": "smithasraj.kp@gmail.com",
                "mailinglist_id": 109
                },{
                    "id": 939,
                    "first_name": "smitha",
                    "last_name": "sraj",
                    "email": "smithasraj.kp@gmail.com",
                    "mailinglist_id": 109
                }
            ]
        }
    ]

общие поля, такие как список рассылки имендолжен быть вне массива. Есть ли возможность сделать это?Можем ли мы перебрать объект данных сериализатора и можно его настроить?

1 Ответ

0 голосов
/ 04 декабря 2018

Да, вы можете переопределить to_representation() метод каждого сериализатора.

Каждый сериализатор имеет to_representation(), который будет создавать данные json для ответа.Вы можете добавить в него любой элемент или добавить что-нибудь, что находится не в нужном месте.например:

class TestSerializer(serializers.Serializer):

     def to_representation(self, instance):
         r = super().to_representation(instance)
         r.update({'test': 'value of test'}
         return r
...