私は同じアプリケーション内で他の3つのモデル(B
、C
、D
とみなす)との限定的な外来キー関係を含むモデルA
を持っています。私は、filter
またはget
やその他のクエリセット操作を使用できない一般的な外部キーの制限を知っています。Django一般的な外部キー - SQLのパフォーマンスを考慮して、良いか悪いですか?
A.objects.filter(generic_object__name="foo")
私はB、C、およびDのオブジェクトを最初にクエリーセットとしてフィルタリングし、それらを反復して汎用逆リレーションを使用してA
オブジェクトをリスト(クエリーセットではなく)として取得する必要があります。
クエリが直接的でないため、データベース上のSQLパフォーマンスにどのように影響するかわかりません。
PS:一般的な外部キーを使用する必要があるため、モデルの再設計ではなくSQLの改善を提案してください。
Django 1.4.3とPostgresを使用しています。
"汎用の"外部キーは正確には何ですか? –
ここで説明したのと同じ設定を使用しています。https://docs.djangoproject.com/en/dev/ref/contrib/contenttypes/#id1 – Babu