相关疑难解决方法(0)

SQLAlchemy单表继承上的一对多关系 - 声明式

基本上,我有这个模型,我在一个表中映射了一个"BaseNode"类和两个子类.关键是我需要其中一个子类,与另一个子类具有一对多的关系.所以在排序中,它是与另一行不同类(子类)的关系,但在同一个表中.您认为我怎么能用声明性语法编写它?

注意:由于我的模型中的其他关系,如果可能,我真的需要坚持单表继承.

class BaseNode(DBBase):
    __tablename__ = 'base_node'
    id = Column(Integer, primary_key=True)
    discriminator = Column('type', String(50))
    __mapper_args__ = {'polymorphic_on': discriminator}

class NodeTypeA(BaseNode):
    __mapper_args__ = {'polymorphic_identity': 'NodeTypeA'}
    typeB_children = relationship('NodeTypeB', backref='parent_node')


class NodeTypeB(BaseNode):
    __mapper_args__ = {'polymorphic_identity': 'NodeTypeB'}
    parent_id = Column(Integer, ForeignKey('base_node.id'))
Run Code Online (Sandbox Code Playgroud)

使用此代码将抛出:

sqlalchemy.exc.ArgumentError:NodeTypeA.typeB_children和反向引用NodeTypeB.parent_node都是相同的方向.你的意思是在多对一方设置remote_side吗?

任何想法或建议?

python orm sqlalchemy

11
推荐指数
1
解决办法
4834
查看次数

标签 统计

orm ×1

python ×1

sqlalchemy ×1