Определение сериализаторов

После настройки REST Framework необходимо указать, как будут сериализованы наши данные. Выходные данные должны быть сериализованы в определенный формат, а входные данные будут десериализованы для обработки. Framework предоставляет следующие классы для построения сериализаторов для одиночных объектов:

Serializer : Предоставляет сериализацию для обычных экземпляров классов Python

ModelSerializer : Предоставляет сериализацию для экземпляров модели

HyperlinkedModelSerializer : То же, что и ModelSerializer, но представляет отношения объектов со ссылками, а не с первичными ключами

Давайте создадим наш первый сериализатор. Создайте следующую структуру файлов в каталоге приложения courses:

api/
    __init__.py
    serializers.py

Мы будем работать над функционалом API в каталоге API, для общей организованности. Отредактируте файл serializers.py и добавьте в него следующий код:

from rest_framework import serializers
from ..models import Subject


class SubjectSerializer(serializers.ModelSerializer):
    class Meta:
        model = Subject
        fields = ('id', 'title', 'slug')

Это сериализатор для модели Subject. Сериализаторы определяются аналогичным образом в классах Form и ModelForm. Класс Meta позволяет указать модель для сериализации и поля, включаемые в сериализацию. Все поля модели будут включены, если не задан атрибут fields.

Давайте опробуем наш сериализатор. Откройте командную строку и выполните следующую команду:

python manage.py shell

Затем выполните следующий код:

from courses.models import Subject
from courses.api.serializers import SubjectSerializer
subject = Subject.objects.latest('id')
serializer = SubjectSerializer(subject)
serializer.data

В этом примере мы получим объект Subject, создаем экземпляр SubjectSerializer и доступ к сериализованным данным. Будут выведены следующие данные:

{'slug': 'music', 'id': 4, 'title': 'Music'}

Как можно видеть, данные модели переводятся в нативные типы данных Python.

results matching ""

    No results matching ""