、テンプレート内のクエリセットの長さを示しDjangoは - どのように私は、出力Iが(私のデバッグの目的のために)使用していますクエリセットのサイズ</p> <p>は、私が試したことができ、私のHTMLファイルに
{{ len(some_queryset) }}
しかし、それは動作しませんでした。フォーマットは何ですか?
、テンプレート内のクエリセットの長さを示しDjangoは - どのように私は、出力Iが(私のデバッグの目的のために)使用していますクエリセットのサイズ</p> <p>は、私が試したことができ、私のHTMLファイルに
{{ len(some_queryset) }}
しかし、それは動作しませんでした。フォーマットは何ですか?
{{ some_queryset.count }}
を試してください。
これは、バックグラウンドで生成されたSQLを最適化するため、レコード自体の代わりにレコード数を取得するため、len({{ some_queryset.__len__ }}
で起動可能)を使用するよりも優れています。
フィルターの長さはどうですか?それは同じですか? https://docs.djangoproject.com/en/dev/ref/templates/builtins/#length – dannyroa
は同じではありません!あなたは実際に長さを使用する必要があります、私の答えを確認する必要があります:http://stackoverflow.com/a/18578147/267719 – daveoncode
今のところdjangoはテンプレートで '__len__'を許可していません。 – mehmet
some_queryset.count()
または{{some_queryset.count}}
です。
を使用しないでください。len
は、はるかに効率が悪いです。データベースはその作業をしている必要があります。 count()
に関するドキュメントを参照してください。
しかし、バッファのアドバイスを考慮に入れて、レコードを繰り返し処理する予定の場合は、len
を使用してクエリーセットを解決し、結果の行をメインメモリに常駐させることになります。これは無駄になりませんとにかくこれらの行を訪問するからです。実際にはdb接続の待ち時間に応じてより高速になるかもしれませんが、常に測定する必要があります。
'' lontを使用しないでください、それはずっと効率が悪いです.''とにかくあなたのクエリーセットを反復しようとしない限り、真です。その場合、 'count'より' len'を優先します。 [続きを読む](http://stackoverflow.com/questions/14327036/count-vs-len-on-a-django-queryset) – Medorator
ただ、別の答えとして、上記Yuji'Tomita'Tomitaコメント@ハイライト表示します:
何に
len()
を呼び出すためlength
と呼ばれるフィルタがあります。
ですから、使用することができます
{{ some_queryset|length }}
何にLEN()を呼び出すための 'length'と呼ばれるフィルタがあります。 '{{any_iterable | length}}' –
@ Yuji'Tomita'Tomitaだから、あなたは 'some_queryset.all | length'を使ったでしょうか?これは生成されるSQLの点で最適ですか? 'some_queryset.count'は全てのモデルフィールドを選択する代わりに' SELECT COUNT(*) '...を使います。私はパフォーマンスの面でこれがどれほど重要なのかわかりませんが、大きなクエリーで何かを推測します。これは重要な意味を持ちますか? – AJP
@AJPはい。カウントを取得している場合は、some_queryset.countを実行します。とにかく既に評価されているならば、長さはあなたにdbヒットを救います。 –