0

次のような3 つのモデルと、views.pyがあるA Bとします。C

def blahblah(request):
    a = A.objects.all(),
    b = B.objects.all(),
    c = C.objects.all(),
    context = {
      a = a,
      b = b,
      c = c,
    }
    return render(request, template, context)

queryset は遅延していると聞いたので、使用するまでデータベースにヒットしません。a問題は、このようにのみ使用され、または{{ a }}を使用しないテンプレートがある場合、データベースに何回アクセスするかです。クエリセットをコンテキストに配置し、テンプレートで使用しないでクエリセットをトリガーしますか? ありがとう、下手な英語でごめんなさい。bc

4

1 に答える 1

3

一度だけ。bまたはから実際に結果を取得しない場合c、データベースはヒットしません。

通常、テンプレートでは、for ループを使用してクエリ セットから個々の項目を抽出したり、count. ただし、テンプレートに {{ a }} のみaが含まれていると仮定すると、実際には DB からクエリされるのはのみallですget

また、デバッグ ツールバーを使用して、どのクエリが実行されているかを実際に確認できることも付け加えておきます。

于 2012-12-05T09:39:05.127 に答える