2013-05-19 59 views
0

我使用SQLAlchemy來表示作者之間的關係。我希望有與其他作者相關的作者(coauthorshp),並且在關係中有額外的數據,因此通過作者a我可以找到他們的合着者。從表到SQLAlchemy自身的多對多關係

如何,這是兩個不同的對象之間進行的是:

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

你能舉一個你究竟想要做什麼的例子嗎?閱讀你的問題是有道理的,但需要更多的信息。 – CodeLikeBeaker

回答

0

,如果你想從字面上對中行association,也就是說,每一個id_left, id_right會插入,也插入id_right, id_left,你會使用一個attribute event監聽兩側追加事件,併產生在另一個方向追加。

如果您只是希望能夠在任何方向上在父/子之間導航,只需要一行id_left, id_right就足夠了。文檔中關於這種映射的例子說明了整個事情。

相關問題