SQLAlchemyを使用して、ユーザーが複数のグループを持ち、グループに複数のユーザーを持つことができる基本ユーザーグループモデルを実装しようとしています。SQLAlchemy多対多孤立削除
グループが空になると、グループを削除したい(グループに関連付けられている他のものと一緒に、幸いSQLAlchemyのカスケードはこれらのより単純な状況でうまくいく)。
問題は、カスケード=「すべて削除 - 孤児は」私が望む正確に何をしないということです。グループが空になったときにグループを削除する代わりに、メンバーがグループを離れるときにグループを削除します。
データベースにトリガを追加すると、トリガがSQLAlchemyのカスケード処理をバイパスしてグループに関連付けられているものが削除されないように見えることを除けば、グループが空になったときに削除できます。
は、そのすべてのメンバーが出て、関連するエンティティにこの削除カスケードを持っているときに、グループを削除するための最良の方法は何ですか。
ユーザーがグループを離れてトリガーと同じことをすることができるコード内のすべての場所を検索することで手動で行うことができると私は理解していますが、私は怠け者です)。
私は、大体何を(あなたは、削除、孤児などを入れた多対多の関係を、設定しているか)あなたのコードについていくつかの詳細なしにこの質問に答えるには少し難しいかもしれないと思いますスキーマなど –
私は、バックリファレンスと通常の関係()でdelete-orphanを試しました。 基本的にはマッパーです(ユーザ、ユーザ、プロパティ= {'groups':relation = relation(グループ、セカンダリ= users_groups、backref = backref( 'users'))}) –