Я использую Django Rest Framework и хотел бы сериализовать разные типы, используя один и тот же формат. Формат представляет собой список всех экземпляров определенного типа, а также определенного выбранного экземпляра.
Моя проблема заключается в том, что мне нужно написать отдельный класс сериализатора для каждого типа, который я хочу сериализовать. В C ++ я решил бы это, указав тип и сериализатор типов в качестве аргумента шаблона. Как я могу сделать это в Python?
Универсальный объект, который я хотел бы сериализовать:
class OptionSelect(object):
def __init__(self, options, selected):
self.options = options
self.selected = selected
Что мне сейчас нужно для сериализации:
class TypeAOptionSerializer(serializers.Serializer):
options = TypeASerializer(many=True)
selected = TypeASerializer()
class TypeBOptionSerializer(serializers.Serializer):
options = TypeBSerializer(many=True)
selected = TypeBSerializer()
class TypeCOptionSerializer(serializers.Serializer):
options = TypeCSerializer(many=True)
selected = TypeCSerializer()
Вместо этого я хотел бы создать Сериализатор, подобный этому:
class OptionSerializer(serializers.Serializer):
options = serializer(many=True)
selected = serializer()
def __init__(self, serializer):
self.serializer = serializer
super().__init__()
Может быть, я должен использовать другой подход?