Как объединить две модели, унаследованные от Django, в один сериализатор

В Django есть ли способ объединить две модели, наследующие один и тот же класс, в один сериализатор?

from django.db.models import Model
class A(Model):
    a = IntegerField(...)

class B(A):
# There may or may not be such a thing as class C.

class C(A):
# There may or may not be such a thing as class B.

У меня есть код, как указано выше.

Можно ли создать сериализатор на основе модели класса A?

Я пытался создать таблицу представления в SQL, но отказался от этой затеи из-за проблем с производительностью.

Пожалуйста, любые хорошие идеи. Это так больно...😥

В общем случае не стоит повторно использовать сериализаторы, поскольку это может привести к неожиданному поведению, когда что-то изменится в базовом сериализаторе или когда вы добавите/удалите атрибуты в одной из ваших моделей.

Если модели B и C имеют некоторые общие атрибуты, то, возможно, вам стоит подумать об изменении дизайна БД.

Однако, в этом случае я бы определил 2 сериализации, которые имеют атрибут абстрактной модели:


class BSerializer(serializers.Serializer):
    a = serialzier.IntegerField()
    ... 

class CSerializer(serialziers.Serializer):
    a = serializer.IntegerField()
    ... 

Вернуться на верх