Для экономии HTTP-запросов может быть удобно отправлять вместе с запросом сопутствующие документы.

JSON API specification for Ember Data.

Вложенные сериализаторы с возможностью записи

Хотя плоские структуры данных служат для правильного разграничения отдельных сущностей в вашем сервисе, бывают случаи, когда более целесообразно или удобно использовать вложенные структуры данных.

С вложенными структурами данных достаточно легко работать, если они доступны только для чтения - просто вложите классы сериализаторов, и все готово. Однако при использовании вложенных сериализаторов с возможностью записи есть еще несколько тонкостей, связанных с зависимостями между различными экземплярами модели и необходимостью сохранения или удаления нескольких экземпляров одним действием.

Структуры данных «один ко многим

Пример вложенного сериализатора **только для чтения*. Здесь нет ничего сложного.*

class ToDoItemSerializer(serializers.ModelSerializer):
    class Meta:
        model = ToDoItem
        fields = ['text', 'is_completed']

class ToDoListSerializer(serializers.ModelSerializer):
    items = ToDoItemSerializer(many=True, read_only=True)

    class Meta:
        model = ToDoList
        fields = ['title', 'items']

Некоторые примеры вывода нашего сериализатора.

{
    'title': 'Leaving party preparations',
    'items': [
        {'text': 'Compile playlist', 'is_completed': True},
        {'text': 'Send invites', 'is_completed': False},
        {'text': 'Clean house', 'is_completed': False}
    ]
}

Давайте рассмотрим обновление нашей вложенной структуры данных «один ко многим».

Ошибки валидации

Добавление и удаление элементов

Выполнение запросов PATCH

Вернуться на верх