生のクエリを使用していますが、返される結果の数を取得する方法がわかりません。方法はありますか?
編集
.count() は機能しません。戻り値: 「RawQuerySet」オブジェクトには属性「count」がありません
生のクエリを使用していますが、返される結果の数を取得する方法がわかりません。方法はありますか?
編集
.count() は機能しません。戻り値: 「RawQuerySet」オブジェクトには属性「count」がありません
次のように、最初にリストにキャストして長さを取得することもできます。
results = ModelName.objects.raw("select * from modelnames_modelname")
len(list(results)) #returns length
これは、テンプレート内の RawQuerySet にエントリの長さまたは存在さえも保持する場合に必要です。上記のように長さを事前に計算し、それをパラメーターとしてテンプレートに渡します。
raw()
queryset メソッドについて話していると思います。これは、他のクエリセットと同じようにクエリセットを返します。もちろん.count()
、他の ORM クエリと同じように呼び出すことができます。
編集チェックしないとどうなるかを示します。.raw()
お気づきのように、count メソッドを持たない RawQuerySet を返します。また、サポートもしていませんlen()
。長さを取得する唯一の方法は、クエリセットを反復処理してカウントすることです。
sum(1 for result in results)