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

Python 从Django的raw()查询函数获取结果数,python,django,django-orm,Python,Django,Django Orm,我使用的是一个原始查询,我很难找到如何获得它返回的结果数。有办法吗 编辑 .伯爵不工作。它返回:“RawQuerySet”对象没有属性“count”我想您所说的是raw queryset方法。它返回的查询集与其他任何查询集一样。所以你当然可以调用它,就像在任何其他ORM查询中一样 “编辑”显示未检查时发生的情况。正如您所注意到的,.raw返回一个没有count方法的RawQuerySet,它也不支持len。获取长度的唯一方法是迭代查询集并对其进行计数: sum(1 for result in r

我使用的是一个原始查询,我很难找到如何获得它返回的结果数。有办法吗

编辑

.伯爵不工作。它返回:“RawQuerySet”对象没有属性“count”

我想您所说的是raw queryset方法。它返回的查询集与其他任何查询集一样。所以你当然可以调用它,就像在任何其他ORM查询中一样

“编辑”显示未检查时发生的情况。正如您所注意到的,.raw返回一个没有count方法的RawQuerySet,它也不支持len。获取长度的唯一方法是迭代查询集并对其进行计数:

sum(1 for result in results)

也可以先将其强制转换为列表以获取长度,如下所示:

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

如果您希望在模板中也具有RawQuerySet中的条目的长度,甚至存在条目,则需要这样做。只需像上面那样预先计算长度,并将其作为参数传递给模板。

Count适用于RawQuerySet

ModelName.objects.raw("select 1 as id , COUNT(*) from modelnames_modelname")
我试过这个。我得到:'RawQuerySet'对象没有属性'count',我想没有方法。非常感谢。这将强制对查询进行评估否?这将强制对查询进行评估否?如果你只想要计数,这是昂贵的。正如@SK9所说:这是非常昂贵的。不幸的是:wontfix: