Вы можете использовать сериализатор '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
в своем представлении.