我正在使用SQLAlchemy来表示作者之间的关系。我想让作者与其他作者(coauthorshp)相关,在关系中有额外的数据,这样作者a
我可以找到他们的合作者。
如何在两个不同的对象之间完成此操作:
class Association(Base):
__tablename__ = 'association'
left_id = Column(Integer, ForeignKey('left.id'), primary_key=True)
right_id = Column(Integer, ForeignKey('right.id'), primary_key=True)
extra_data = Column(String(80))
child = relationship('Child', backref='parent_assocs')
class Parent(Base):
__tablename__ = 'left'
id = Column(Integer, primary_key=True)
children = relationship('Association', backref='parent')
class Child(Base):
__tablename__ = 'right'
id = Column(Integer, primary_key=True)
但在我的情况下我该怎么办呢?
合着的本质是它是双向的。因此,当您通过coauthoship对象将元组(id_left, id_right)
插入到coauthorship表中时,是否还有一种方法可以轻松插入反向关系?我问,因为我想使用关联代理。
答案 0 :(得分:0)
如果你想在association
中确实有一对行,也就是说,对于插入的每个id_left, id_right
,你也插入一个id_right, id_left
,你会使用一个{ {3}}监听任何一方的追加事件,并在另一个方向产生追加。
如果您只想在两个方向上的父/子之间导航,只需一行id_left, id_right
即可。关于这种映射的文档中的示例说明了整个事情。