len() . QuerySet は、len() を呼び出すと評価されます。ご想像のとおり、これは結果リストの長さを返します。
注: セット内のレコード数を決定するだけの場合は、クエリセットで len() を使用しないでください。SQL の SELECT COUNT(*) を使用して、データベース レベルでカウントを処理する方がはるかに効率的です。Django はまさにこの理由から count() メソッドを提供します。以下の count() を参照してください。
ソース
したがって、len(userdesigns)
の代わりにを呼び出すとuserdesigns.count()
、django は単一のクエリでテーブルからすべての関連データを要求します。その後、userdesigns
変数のすべての項目にアクセスでき、追加のクエリは行われません。
>>> m = Model1.objects.filter(desadder=1)
>>> len(m)
(0.000) SELECT "app1_model1"."id", "app1_model1"."desadder", "app1_model1"."test" FROM "app1_model1" WHERE "app1_model1"."desadder" = 1 ; args=(1,)
2
>>> m[0]
<Model1: Model1 object>
>>> m = Model1.objects.filter(desadder=1)
>>> len(m)
(0.000) SELECT "app1_model1"."id", "app1_model1"."desadder", "app1_model1"."test" FROM "app1_model1" WHERE "app1_model1"."desadder" = 1 ; args=(1,)
2
>>> m[0]
<Model1: Model1 object>
>>>