|
|
1
132
正如我刚刚发现的,这里是如何使用Django 1.1聚合API实现这一点:
|
|
|
2
58
( :完整的ORM聚合支持现在包含在 Django 1.1 . 与下面关于使用私有API的警告一样,这里介绍的方法不再适用于Django的1.1后版本。我还没有弄清楚原因;如果您使用的是1.1或更高版本,您应该使用real aggregation API 核心聚合支持在1.0中已经存在;它只是没有文档记录,不受支持,而且上面还没有友好的API。但在1.1到来之前,您仍然可以使用它(您自己承担风险,并且完全知道query.group_by属性不是公共API的一部分,可能会更改):
如果您随后迭代查询集,则每个返回值都将是一个带有“category”键和“count”键的字典。 这里不必按-计数排序,这只是为了演示它是如何完成的(必须在.extra()调用中完成,而不是在queryset构造链的其他地方)。同样,您也可以说count(id)而不是count(1),但后者可能更有效。 还请注意,在设置.query.group_by时,值必须是实际的DB列名('category_id'),而不是Django字段名('category')。这是因为您正在调整查询内部结构,使所有内容都以DB术语而不是Django术语表示。 |
|
|
3
57
因为我对Django1.1中的分组工作方式有点困惑,所以我想在这里详细介绍一下如何使用它。首先,重复迈克尔的话:
还要注意,您需要
这将仅选择类别,然后添加一个名为
这应该会产生你想要的结果。要设置注释的名称,可以使用:
然后您将有一个名为
关于分组的其他一切对我来说都非常简单。一定要查看 Django aggregation API |
|
|
4
2
这个怎么样?(慢的除外。)
它的优点是很短,即使它获取了很多行。 编辑 一个查询版本。顺便说一句,这是经常发生的 更快 然后在数据库中选择COUNT(*)。试试看。
|
|
|
Patrick Bond · 如何将模型中的函数结果添加到列表中? 1 年前 |
|
|
bur · 每次从模板调用方法都会查询数据库吗? 1 年前 |
|
|
Stefan · 在子目录中设置Django 1 年前 |
|
|
vale383 · 如何在Django端点中查找user_id 1 年前 |
|
|
Kovy Jacob · Django在动态URL段中添加斜线 1 年前 |
|
|
user987 · 如何在Django中访问提交的表单请求数据 1 年前 |
|
|
user24242514 · 将嵌套查询字符串请求转换为字典 1 年前 |