Должно работать следующее (именно то, что говорит ошибка: отсутствует primaryjoin
):
class FooBarAssociation(Base):
foo_id = Column(Integer, ForeignKey('foo_table.id'), primary_key = True, )
bar_id = Column(Integer, ForeignKey('bar_table.id'), ForeignKey('foo_table.id'), primary_key = True, )
foo = relationship(Foo, backref="bars", primaryjoin=(foo_id==Foo.id))
bar = relationship(Bar, backref="foos", primaryjoin=(bar_id==Bar.id))
Как видите, в столбце bar_id
есть два внешних ключа. Это может потребоваться из-за наследования или вы можете удалить его. Но если вы не храните никакую другую информацию, кроме отношения «многие ко многим», то вместо этого вы можете рассмотреть Proxy ассоциации .