Как объединить две модели, унаследованные от 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()
...