我已經閱讀了關於構建多對多關係的SQLAlchemy文檔和教程,但我無法弄清楚如何在關聯表包含多於2個外鍵。如何使用SQLAlchemy建立多對多關係:一個很好的例子
我有一個項目表,每個項目都有很多細節。詳細信息可以在許多項目一樣,所以項目及
之間的許多一對多的關係,我有以下幾點:
class Item(Base):
__tablename__ = 'Item'
id = Column(Integer, primary_key=True)
name = Column(String(255))
description = Column(Text)
class Detail(Base):
__tablename__ = 'Detail'
id = Column(Integer, primary_key=True)
name = Column(String)
value = Column(String)
我的關聯表(它之前,另2確定在代碼中):
class ItemDetail(Base):
__tablename__ = 'ItemDetail'
id = Column(Integer, primary_key=True)
itemId = Column(Integer, ForeignKey('Item.id'))
detailId = Column(Integer, ForeignKey('Detail.id'))
endDate = Column(Date)
在文檔中,據說我需要使用「關聯對象」。我無法弄清楚如何正確使用它,因爲它與mapper形式是混合的聲明,並且這些示例看起來並不完整。我增加了行:
details = relation(ItemDetail)
作爲Item類的成員,並且該行:
itemDetail = relation('Detail')
作爲關聯表的一個成員,如文檔中所述。
當我做item = session.query(Item).first()時,item.details不是一個Detail對象的列表,而是一個ItemDetail對象的列表。
如何在Item對象中正確獲取細節,即item.details應該是Detail對象的列表?
http://www.sqlalchemy.org/docs/orm/extensions/associationproxy.html是非常詳細和大量的例子。不知道這裏還需要什麼。 – 2011-04-22 14:54:18
關聯代理不是我正在尋找的。我用Table 1替換了ItemDetial類聲明,並在關係函數 – duduklein 2011-04-22 20:40:29