【发布时间】:2011-02-25 12:13:13
【问题描述】:
我有一个带有Page 和Revisions 的wiki 数据库布局。每个修订版都有一个引用页面的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']
)
Full code(您可以按原样运行)
但是这总是引发 ArgumentError: Could not determine relationship direction for primaryjoin condition ...`,我已经尝试了所有我想到的,它没有工作。
我做错了什么?这是一种不好的方法吗?除了建立关系之外,还能怎么做?
【问题讨论】:
标签: python sqlalchemy relationship database