Различные сериализаторы для разных экземпляров в наборе запросов в Django Rest Framework - PullRequest
0 голосов
/ 18 мая 2018

В generics.GenericAPIView переопределение метода get_serializer_class() только динамически выбирает сериализатор для всего набора запросов.Есть ли способ применить разные сериализаторы к разным объектам в одном и том же наборе запросов на основе некоторого значения атрибута объекта?Заранее спасибо!

1 Ответ

0 голосов
/ 18 мая 2018

Вы можете использовать сериализатор 'dispatcher', который будет использовать сериализатор определенного типа.Обратите внимание, что в этом случае данные, специфичные для типа, будут представлены в виде поля typeSpecificData.

class Type1Serializer(serializers.ModelSerializer):
    ...


class Type2Serializer(serializers.ModelSerializer):
    ...


class MySerializer(serializers.ModelSerializer):
    typeSpecificData = serializers.SerializerMethodField()

    def get_typeSpecificData(self, instance):
        if instance.type == 'type1':
            serializer = Type1Serializer
        else:
            serializer = Type2Serializer


        return serializer(instance).data

А затем вы просто используете MySerializer в своем представлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...