代码之家  ›  专栏  ›  技术社区  ›  Galen

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

  •  7
  • Galen  · 技术社区  · 14 年前

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

    编辑

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

    3 回复  |  直到 14 年前
        1
  •  12
  •   Daniel Roseman    14 年前

    我猜你说的是 raw() .count() 在它上面,就像在任何其他ORM查询上一样。

    编辑 显示不检查时发生的情况。正如你所说, .raw() len() . 获取长度的唯一方法是遍历queryset并对其进行计数:

    sum(1 for result in results)
    
        2
  •  16
  •   Jason Kotenko    13 年前

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

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

    如果您想在模板中获得RawQuerySet中条目的长度甚至存在,那么这是必需的。只需像上面那样预先计算长度,并将其作为参数传递给模板。

        3
  •  2
  •   Tinashe Robert    7 年前

     
    
    ModelName.objects.raw("select 1 as id , COUNT(*) from modelnames_modelname")