我正在使用原始查询,但我无法找到如何获得返回的结果数量。有办法吗?
修改
.count()不起作用。它返回:'RawQuerySet'对象没有属性'count'
答案 0 :(得分:12)
您也可以先将其强制转换为列表以获取长度,如下所示:
results = ModelName.objects.raw("select * from modelnames_modelname")
len(list(results)) #returns length
如果您想在模板中的RawQuerySet中拥有条目的长度甚至存在,则需要这样做。只需像上面那样预先计算长度,并将其作为参数传递给模板。
答案 1 :(得分:11)
我认为你在谈论 raw()
queryset方法。这会像其他任何一样返回一个查询集。当然,您可以在其上调用.count()
,就像您在任何其他ORM查询中一样。
修改显示不检查时会发生什么。如您所知,.raw()
返回一个没有count方法的RawQuerySet - 它也不支持len()
。获得长度的唯一方法是遍历查询集并计算它们:
sum(1 for result in results)
答案 2 :(得分:1)
在RawQuerySet上运行计数
ModelName.objects.raw("select 1 as id , COUNT(*) from modelnames_modelname")