从Django的raw()查询函数中获取结果数

时间:2010-06-14 12:44:51

标签: python django django-orm

我正在使用原始查询,但我无法找到如何获得返回的结果数量。有办法吗?

修改

.count()不起作用。它返回:'RawQuerySet'对象没有属性'count'

3 个答案:

答案 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")