SQLAlchemy Relación uno a muchos en herencia de tabla única - declarativa

Básicamente, tengo este modelo, donde mapeé en una sola tabla una clase "BaseNode", y dos subclases. El punto es que necesito una de las subclases para tener una relación de uno a muchos con la otra subclase. Entonces, en orden, es una relación con otra fila de diferente clase (subclase), pero en la misma tabla. ¿Cómo crees que podría escribirlo usando sintaxis declarativa?.

Nota: Debido a otras relaciones en mi modelo, si es posible, realmente necesito seguir con la herencia de una sola tabla.

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'))

El uso de este código arrojará:

sqlalchemy.exc.ArgumentError: NodeTypeA.typeB_children y back-reference NodeTypeB.parent_node son ambos de la misma dirección . ¿Quisiste establecer remote_side en el ¿Muchos a un lado?

¿Alguna idea o sugerencia?

11
задан Mel 9 May 2017 в 09:11
поделиться