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

> Для экономии HTTP-запросов может быть удобно отправлять вместе с запросом сопутствующие документы.
>
> * [Спецификация JSON API для Ember Data](http://jsonapi.org/format/#url-based-json-api).

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

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

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

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

```python
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']
```

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

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

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

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

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

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