我有一个表,其中一列是带有两个值的varchar(' groupA',' groupB')
当我创建模型时,我想实现两件事:
这两个模型的功能并不相同,但它们代表相同的表:
class GroupA(Base):
__tablename__ = 'groups'
id = Column('id', Integer, primary_key=True)
name = Column('name', String(80))
group_type = Column('type', String(15), default="groupA")
对于groupB:
class GroupB(Base):
__tablename__ = 'groups'
id = Column('id', Integer, primary_key=True)
name = Column('name', String(80))
group_type = Column('type', String(15), default="groupB")
所以GroupA& B是相同的表:" groups",但GroupA有100行,groupB有20行
我想阻止一直写这个:
session.query(GroupA).filter(group_type = 'groupA')
session.query(GroupB).filter(group_type = 'groupB')
如何使用某种" fitler"来配置我的模型?当我查询.all()时,它会返回每个模型的数据相关性吗?现在,无论我查询哪种型号,我都会收到两种型号的所有数据......
提前致谢。
要使用继承,我必须将整个结构更改为
class Group(Base):
id = Column('id', Integer, primary_key=True)
name = Column('name', String(80))
group_type = Column('type', String(15))
__mapper_args__ = {
'polymorphic_on': g_type,
'polymorphic_identity': 'Group'
}
# Replacing Base => Group
class GroupA(Group):
__mapper_args__ = {
'polymorphic_identity': 'GroupA'
}
class GroupB(Group):
__mapper_args__ = {
'polymorphic_identity': 'GroupB'
}
它正在工作,非常感谢你!