Я прочитал документацию по 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)
Моя ассоциативная таблица (она определена перед двумя другими в коде):
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)
В документации сказано что мне нужно использовать «объект ассоциации». Я не мог понять, как его правильно использовать, поскольку он смешал декларативно с формами сопоставления, и примеры кажутся неполными. Я добавил строку:
details = relation(ItemDetail)
как член класса Item и строку:
itemDetail = relation('Detail')
как член таблицы ассоциаций, как описано в документации.
, когда я делаю item = session.query (Item). first (), item.details - это не список объектов Detail, а список объектов ItemDetail.
Как я могу правильно получить детали в объектах Item, например, item. Details должен быть списком объектов Detail?