我有一个带有Page
and的 wiki db 布局Revisions
。每个 Revision 都有一个page_id
引用页面,page
与被引用页面的关系;每个页面all_revisions
都与其所有修订版本相关。到目前为止很常见。
但我想为页面实现不同的时期:如果页面被删除并重新创建,新的修订版有一个新的epoch
. 为了帮助找到正确的修订,每个页面都有一个current_epoch
字段。现在我想revisions
在页面上提供一个只包含其修订的关系,但只包含那些时代匹配的关系。
这是我尝试过的:
revisions = relationship('Revision',
primaryjoin = and_(
'Page.id == Revision.page_id',
'Page.current_epoch == Revision.epoch',
),
foreign_keys=['Page.id', 'Page.current_epoch']
)
完整代码(您可以按原样运行)
但是,这总是会引发ArgumentError: Could not determine relationship direction for primaryjoin condition ...`,我已经尝试了所有我想到的,它没有用。
我究竟做错了什么?这是一种不好的方法吗?除了建立关系之外,还能怎么做?