私はDjangoの組み込みユーザーモデルを使用しており、ユーザーにはForeignKeyを持つカスタムFooオブジェクトを持っています。私はジャンゴでこれを実現する必要がありますどのようにDjangoはフィルター付きの外部結合を残しました
SELECT * from auth_user LEFT OUTER JOIN "foo" ON
(auth_user.id = foo.id AND <other criteria here>)
:私は、すべてのユーザーオブジェクトとそのような特定の制約に合うのFooオブジェクトのすべてを選択していますよ?これまで私が試してみた:
User.objects.filter(foo__<criteria>)
が、それは次のようにSQLを生成:
SELECT * from auth_user LEFT OUTER JOIN "foo" ON
(auth_user.id = foo.id) WHERE <other criteria here>
をし、唯一の基準に合うのFooオブジェクトを持っているユーザーオブジェクトを返します。あるいは、私はすべてのUserオブジェクトを選択し、それぞれのオブジェクトに対してクエリを実行できますが、それは実質的に効率が悪いでしょう。
他の基準は何ですか?それはまだ 'Foo'モデルに関係していますか? – Ngenator
はい。 Fooにはいくつかの日付フィールドがあり、指定した日付範囲からFoosだけを選択しています。 – Phobophobia
'User.objects.filter(foo__)'とは何ですか? 'foo'は' User'モデルのフィールドではありません。私は 'LEFT OUTER JOIN'を持つクエリを生成することはできませんでした。 –
user2233706