sqlalchemy: наследование одной таблицы без дескрипторного столбца в декларативном стиле - PullRequest
0 голосов
/ 03 октября 2019

Я хочу наследование одной таблицы без столбца дискриминатора, чтобы каждая производная модель просто имела какое-то определенное свойство, равное нулю во всех других производных моделях, например:

class AbstractModel(Base):
    __tablename__ = 'MyTable'

    id = Column(Integer, primary_key=True, autoincrement=True)

    __mapper_args__ = {
        'polymorphic_on':  ...
        'polymorphic_identity': 0

    }


class ConcreteModel1(BaseSchedule):

    column1 = Column(Integer)

    __mapper_args__ = {
        'polymorphic_identity': 1
    }


class ConcreteModel2(BaseSchedule):

    column2 = Column(Integer)

    __mapper_args__ = {
        'polymorphic_identity': 2
    }

, где polymorphic_on - этоa ColumnElement, равный

  • 1, если column1 не является нулевым, и
  • 2, если column2 не является нулевым

Проблема заключается в том, что базовый классничего не знает об этих столбцах. Есть ли решение этой проблемы без введения специального столбца дискриминатора в AbstractModel и без отказа от декларативного стиля?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...