Настройка формата сериализаторов - PullRequest
0 голосов
/ 27 января 2020

Я бы хотел настроить сериализаторы DRF таким образом, чтобы вместо синтаксического анализа / вывода, скажем, объекты "contact" выглядели примерно так:

{
    "name": "foo",
    "email": "bar@example.com"
}

Это бы обернуло его внутри атрибута "contact" в JSON, например

{
    "contact": {
        "name": "foo",
        "email": "bar@example.com"
    }
}

Аналогично, ListSerizalizer возвращает список контактов, например, так:

{
    "contacts": [
       <item1>,
       <item2>...
    ]
}

Любые идеи о том, как go об этом?

Приветствия -JM

Ответы [ 2 ]

0 голосов
/ 27 января 2020

Необходимо создать два сериализатора: один для контакта, второй для контактов. Чем вам нужно заняться:

class ContactSerializer(serializers.Serializer):
    # it should contain your fields

class AddrBook(serializers.Serializer):
    contacts = ContactSerializer(many=True)

Здесь вы можете найти больше информации о вложенных сериализаторах https://www.django-rest-framework.org/api-guide/serializers/#dealing -with-nested-objects

0 голосов
/ 27 января 2020

Вы можете переопределить метод to_representation для настройки сериализации.

def to_representation(self, instance):
    ret = super().to_representation(instance)
    return {"contact": ret}

Документация

...