Грубо говоря, у меня есть следующая схема в ORM:
class Page(models.Model):
title = models.CharField(max_length=255, null=False, blank=False)
@property
def content(self):
return [Video.objects.all()[0], Text.objects.all()[0], Video.objects.all()[1]]
, и у меня есть следующий набор классов для поддержки сериализации для детального просмотра:
class ContentSerializer(serializers.ListSerializer):
class Meta:
model = ???
fields = '???'
class PageDetailSerializer(serializers.ModelSerializer):
content = ContentSerializer(many=True)
class Meta:
model = Page
fields = ('title', 'content', )
Итак, я 'Я ищу способ сериализации этого свойства Page.content
, а именно:
- списка;
- будет содержать разнородные данные (например, комбинация
Video
, Audio
, Text
и другие модели.
Так что мне нужно как-то исправить один из встроенных сериализаторов, чтобы пройтись по списку и проверить тип каждого объекта. И затем решить, как сериализовать каждый из них. Например, ямог подготовить вид динамически создаваемого ModelSerializer
с:
obj_type = type(obj)
class ContentModelSerializer(serializers.ModelSerializer):
class Meta:
model = obj_type
fields = '__all__'
serialized_obj = ContentModelSerializer(obj)
Как я мог это реализовать?