在多态表上配置一对多关系

时间:2019-07-16 20:36:18

标签: python sqlalchemy flask-sqlalchemy

我通过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_Aattribute_parent作为属性。

我无法定义与ChildA的关系,因为它将只有ChildA的列。我在db.Relationship内尝试了各种参数,例如使用with_polymorphic创建多态对象并在关系内使用该参数。

0 个答案:

没有答案