Как изменить шаблон ответа DRF API SlugRelatedField Response

Мне удалось создать рабочую модель с 2 разными сериализаторами, в зависимости от того, что мы делаем. Прямо сейчас, ReadTitleSerializer возвращает этот JSON объект:

[
    {
        "id": 1,
        "category": {
            "id": 1,
            "name": "Movies",
            "slug": "movie"
        },
        "genres": [
            {
                "id": 1,
                "name": "Drama",
                "slug": "drama"
            }
        ],
        "name": "Drama Llama",
        "year": "1998-02-02",
        "description": null,
        "rating": null
    }
]

А это ответ от WriteTitleSerializer:

{
    "id": 1,
    "category": "movie",
    "genres": [
        "drama"
    ],
    "name": "Drama Llama",
    "year": "1998-02-02",
    "description": null,
    "rating": null
}

Как сделать так, чтобы WriteTitleSerializer отвечал аналогично ReadTitleSerializer? Я использую SlugRelatedField в WriteTitleSerializer, потому что входной JSON должен быть списком slug.

Ввод JSON

{
    "name": "Drama Llama",
    "year": "1998-02-02",
    "category": "movie",
    "genres": [
        "drama"
    ]
}

serializers.py

class ReadTitleSerializer(serializers.ModelSerializer):
    category = CategorySerializer()
    genres = GenreSerializer(many=True)

    class Meta:
        model = Title
        fields = '__all__'
        read_only_fields = ('category', 'genres')


class WriteTitleSerializer(serializers.ModelSerializer):
    category = SlugRelatedField(
        slug_field='slug',
        queryset=Category.objects.all(),
        required=True
    )
    genres = SlugRelatedField(
        slug_field='slug',
        queryset=Genre.objects.all(),
        many=True,
        required=True
    )

    class Meta:
        model = Title
        fields = '__all__'
Вернуться на верх