その単純化されたモデルを持つ:
subproducts = models.ManyToManyField("self", blank=True, symmetrical=False)
active = models.BooleanField(default=False, db_index=True)
そして次のようなデータ:
- 製品 1
- サブP 1
- サブP2
- 製品 2
- サブP 3
- サブP4
- 製品 3
- サブP5
- SubP 6
製品 1 ~ 3 がメイン製品で、SubP* がサブ製品であるとします。Product 1 と Product 3 の ID を持つタプルを持つ: (1, 3)
すべてのサブプロダクトを取得したいので、クエリは (SubP 1、SubP 2、SubP 5、SubP 6) を返す必要があります。
そのクエリをどのように書くのですか?リストをループして製品ごとに 1 つのクエリを作成することはできますが、1000 個のオブジェクトを含むリストでは DB が停止してしまいます。もっと良い方法はありますか?