「関連アイテム」機能を実装する必要があります。つまり、同じテーブルのアイテムを多対多の方法で相互に任意にリンクできるようにする必要があります。ニュースサイトが関連記事を表示する方法に似ています。
また、次のような双方向の関係が必要です。
a = Item()
b = Item()
a.related.append(b)
assert a in b.related # True
さて、SQLレベルでは、これは「標準」の多対多の関係を変更することで解決できると思います。そのため、関連付けが行われるたびに2つのレコードが関連付けテーブルに挿入されるため、(a -> b)および(b - > a) 2 つの別個のレコード。
別の方法として、多対多テーブルの結合条件で関連付けの両側をチェックすることもできます... JOIN assoc ON a.id = assoc.left_id ...
。... JOIN assoc ON a.id = assoc.left_id OR a.id = assoc.right_id ...
関係が「通常の」多対多の関係と同様に機能するように、SQLAlchemy でこれを構成する方法はありますか?
私が正しい用語を知らないだけである可能性があります-私が思いついたすべて-「自己参照」、「双方向」、「関連付け」-はSQLAlchemyで他の何かを説明するために使用されます。