在创建两个类之后尝试安装关系:
Page.revisions = relationship(
'Revision',
primaryjoin = (Page.id==Revision.page_id) & \
(Page.current_epoch==Revision.epoch),
foreign_keys=[Page.id, Page.current_epoch],
uselist=True,
)
顺便说一下,您的测试不正确:
revisions
属性在尚未将数据添加到会话时从数据库加载数据。
更新
:代码中的问题是
primaryjoin
参数不是字符串,因此
it's not evaluated
. 使用字符串
基本连接
工作精细:
class Page(Base):
# [skipped]
revisions = relationship(
'Revision',
primaryjoin = '(Page.id==Revision.page_id) & '\
'(Page.current_epoch==Revision.epoch)',
foreign_keys=[id, current_epoch],
uselist=True,
)