同じアプリ内に、他の3つのモデル(と見なす)へのA
制限の選択肢を持つ一般的な外部キー関係を含むモデルがあります。また、使用できない汎用外部キーやその他のクエリセット操作の制限を知っています。B
C
D
filter
get
したがって、このようなことを実現するA.objects.filter(generic_object__name="foo")
には、最初にB、C、およびDのオブジェクトをクエリセットとしてフィルタリングし、それらを反復処理し、一般的な逆の関係を使用してA
オブジェクトをリスト(クエリセットではない)として取得する必要があります。
クエリは直接ではないため、データベースのSQLパフォーマンスにどのように影響するかはわかりません。
PS:汎用の外部キーを使用する必要があるので、モデルを再設計するのではなく、SQLの改善を提案してください。
Django1.4.3とPostgresを使用します。