とを使用したwikiデータベースレイアウトがPage
ありRevisions
ます。各リビジョンには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を発生させます。primaryjoin条件の関係の方向を判別できませんでした... `、思いついたすべてを試しましたが、機能しませんでした。
私は何が間違っているのですか?これはこれを行うための悪いアプローチですか、関係以外でどのように行うことができますか?