Включить дочернее поле в схему зефира в личность полиморфа c - PullRequest
0 голосов
/ 15 марта 2020

У меня есть модель в базе данных для хранения глобальных настроек приложения. Настройки могут быть различного типа, поэтому я создал дискриминатор объявлений data_type с идентичностью polymorphi c.

class MiscSetting(db.Model):
__tablename__ = "settings_misc"
__table_args__ = (db.UniqueConstraint("county", "name", name="uc_county_name"),)

id = db.Column(db.Integer, primary_key=True)
county = db.Column(db.String, nullable=True)
name = db.Column(db.String(length=50))
data_type = db.Column(db.String(50))

__mapper_args__ = {
    'polymorphic_on': data_type,
    'with_polymorphic': '*'
}


class StringSetting(MiscSetting):
__tablename__ = 'settings_string'
id = db.Column(db.Integer, db.ForeignKey('settings_misc.id'), primary_key=True)
value = db.Column(db.String)
__mapper_args__ = {
    'polymorphic_identity': 'string'
}


class IntegerSetting(MiscSetting):
__tablename__ = 'settings_integer'
id = db.Column(db.Integer, db.ForeignKey('settings_misc.id'), primary_key=True)
value = db.Column(db.Integer)
__mapper_args__ = {
    'polymorphic_identity': 'integer'
}

Когда я пытаюсь сбросить все полученные объекты, не найдено "значение".

settings = db.session.query(MiscSetting).all()
dump = json.dumps(MiscSettingSchema().dump(settings, many=True))

class MiscSettingSchema(BaseSchema):
class Meta:
    model = MiscSetting

Вопрос в том, как включить значение в схему "Зефир"?

...