Я хочу наследование одной таблицы без столбца дискриминатора, чтобы каждая производная модель просто имела какое-то определенное свойство, равное нулю во всех других производных моделях, например:
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
и без отказа от декларативного стиля?