我正在使用原始查询,我无法找出如何获取它返回的结果数量。有办法吗?
编辑
.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()
它返回一个 RawQuerySet ,它没有 count 方法 - 而且它也不支持len()
. 获得长度的唯一方法是遍历查询集并计算它们:
sum(1 for result in results)
计数在 RawQuerySet 上的工作
ModelName.objects.raw("select 1 作为 id , COUNT(*) from modelnames_modelname")