最適化しようとしているDjangoビューがあります。ページ上の親オブジェクトのリストとその子が表示されます。子モデルには親への外部キーがあるため、select_related
適用されないようです。
class Parent(models.Model):
name = models.CharField(max_length=31)
class Child(models.Model):
name = models.CharField(max_length=31)
parent = models.ForeignKey(Parent)
単純な実装では、 n + 1クエリを使用します。ここで、nは親オブジェクトの数です。親リストをフェッチするための1つのクエリ、次に各親の子をフェッチするための1つのクエリ。
私は2つのクエリで仕事をするビューを書きました-1つは親オブジェクトをフェッチし、もう1つは関連する子をフェッチし、次にいくつかのPython(ここに投稿するにはあまりにも恥ずかしいです)ですべてを元に戻します。
標準ライブラリのcollections
モジュールをインポートしていることに気付いたとき、おそらくそれが間違っていることに気づきました。おそらくもっと簡単な方法がありますが、私はそれを見つけるためのDjangoの経験が不足しています。どんなポインタでも大歓迎です!