我通过sqlalchemy
定义了以下示例表:
db = SQLAlchemy()
class Parent():
id = db.Column(...)
attribute_parent = db.Column(...)
type = db.Column(...)
group_id = db.Column(foreign_key=Group.id)
__mapper_args__ = {
'polymorphic_identity': 'generic',
'polymorphic_on': type
}
class ChildA(Parent):
id = db.Column(foreign_key=Parent.id)
attribute_A = db.Column(...)
__mapper_args__ = {
'polymorphic_identity': 'a'
}
class ChildB(Parent):
id = db.Column(foreign_key=Parent.id)
attribute_B = db.Column(...)
__mapper_args__ = {
'polymorphic_identity': 'b'
}
我要创建另一个类,如下所示:
db = SQLAlchemy()
class Group():
id = db.Column(...)
a_children = db.Relationship(...)
b_children = db.Relationship(...)
理想情况下,a_children
是一个多态定义的实体。这将是一个对象列表,每个对象都具有attribute_A
和attribute_parent
作为属性。
我无法定义与ChildA
的关系,因为它将只有ChildA
的列。我在db.Relationship
内尝试了各种参数,例如使用with_polymorphic
创建多态对象并在关系内使用该参数。