0
クエリの結果に集計操作を追加し、私のモデルは以下のとおりです。ジャンゴ私はジャンゴを使用して2つのテーブル間の集約演算をやろうとしている
class Cusinetype(models.Model):
hometype_en = models.TextField()
active = models.BooleanField()
hometype_es = models.TextField(blank=True, null=True)
class Meta:
managed = False
db_table = 'cusinetype'
class Foodpreferences(models.Model):
id_client = models.ForeignKey(Client, models.DO_NOTHING, db_column='id_client')
id_cusinetype = models.ForeignKey(Cusinetype, models.DO_NOTHING, db_column='id_cusinetype')
created_at = models.DateTimeField()
class Meta:
managed = False
db_table = 'foodpreferences'
私が構築しようとしているクエリは次のとおりです。
SELECT
ct.id,
ct.hometype_en,
ct.hometype_es
,
((SELECT COUNT(*)
FROM foodpreferences fp
WHERE fp.id_cusinetype = ct.id AND fp.id_client = 3 ) > 0) selected
FROM
Cusinetype ct
私はモデルを生成しようとしています。これらのテーブルの情報を1つのクエリに格納しようとしていますが、何かが動作します。 誰かがそれを行う方法について考えていますか?このソリューションの
結果は正しいですが、クエリは、SQLの例では予想よりもはるかに遅いクエリを使用しています。あなたはすべてのクライアントのFoodpreferencesを読んでいます。 [Exists()サブクエリ](https://docs.djangoproject.com/en/1.11/ref/models/expressions/#exists-subqueries)を使用することをお勧めします。この例は非常に似ているので、それ以上のコメントは必要ありません。そこにもっと良い解決策を入れてそれを受け入れることは賢明でしょう。 – hynekcer