10

生のクエリを使用していますが、返される結果の数を取得する方法がわかりません。方法はありますか?

編集

.count() は機能しません。戻り値: 「RawQuerySet」オブジェクトには属性「count」がありません

4

3 に答える 3

16

次のように、最初にリストにキャストして長さを取得することもできます。

results = ModelName.objects.raw("select * from modelnames_modelname")
len(list(results))  #returns length

これは、テンプレート内の RawQuerySet にエントリの長さまたは存在さえも保持する場合に必要です。上記のように長さを事前に計算し、それをパラメーターとしてテンプレートに渡します。

于 2011-07-27T14:57:40.660 に答える
12

raw()queryset メソッドについて話していると思います。これは、他のクエリセットと同じようにクエリセットを返します。もちろん.count()、他の ORM クエリと同じように呼び出すことができます。

編集チェックしないとどうなるかを示します。.raw()お気づきのように、count メソッドを持たない RawQuerySet を返します。また、サポートもしていませんlen()。長さを取得する唯一の方法は、クエリセットを反復処理してカウントすることです。

sum(1 for result in results)
于 2010-06-14T12:46:36.527 に答える