问题标签 [django-aggregation]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
797 浏览

django - Django 通过 QuerySet 聚合?

我正在编写一个联赛系统,我想显示每个赛季的球员排名,按每个球员在该赛季累积的积分排序。

到目前为止,我设法使用类似于以下的代码来做到这一点:

我认为同样可以通过更简单的聚合来实现,但我就是无法正确使用 annotate()。

我试过这个,但它只是总结了整个赛季的所有点:

我错过了什么?我猜如果 .extra() 会导致可移植代码,则可以使用它。

0 投票
1 回答
4455 浏览

django - Django 查询 - 是否可以在数据库级别按公共字段对元素进行分组?

我有一个如下所示的数据库模型。将数据视为 2 本书,每本书有 3 个评分。

问题:是否可以通过单个查询将每本书的所有评级分组到一个列表中。我希望在数据库级别执行此操作,而无需在我的代码中迭代查询集。输出应类似于:

我试过这个查询,但评级既不是按书名分组的,也不是平均正确的:

编辑:添加了说明,我正在寻找一种在数据库级别对元素进行分组的方法。

0 投票
1 回答
1569 浏览

django - 可访问所有字段的 django 查询聚合分组

使用这样定义的模型:

我想运行一个查询,找出所有Athlete赢得的事件,按类型分组。我目前正在这样做:

这给了我一个事件类型的字典(短版本)和运动员获胜的次数。然而,这就是它给我的全部。如果我想深入研究其中一个事件以找到距离甚至只是详细的类型名称,我做不到。

我是否以正确的方式解决这个问题?我怎样才能对事件进行分组,而且还可以访问它们的所有字段?

0 投票
1 回答
818 浏览

sql - 不能用 Django 做多个注释

我正在使用django-eztables对数据表进行服务器端处理,并且我想添加一些涉及聚合的字段(如此处所述

以下每个单独工作正常:

但是,如果我尝试以任何一种顺序,以相同的顺序annotate()或一个接一个地链接,它们最终都会得到相同的数字,这是它们各自应该是的乘积。

如果我添加distinct=True到 Count,它会产生正确的值,但它仍然会使 Sum 给出一个膨胀的值。(同样,更改顺序没有帮助,并且 Sum 不带distinct参数)

我在 SO 上看到了几个类似的问题,但大多数似乎都涉及多个计数,可以使用distinct=True. 有一个有一个 Sum,但解决方案涉及使用extra()和一些手工制作的 SQL,到目前为止,我无法适应我需要做的所有外键遍历(我使用了一点 SQL,但是我绝不是专家)。这是相关模型的基本设置,以防万一extra()是唯一可行的解​​决方案:

  • Item 有一个指向 SomeObject 的外键
  • AnotherObject 有一个指向 DifferentObject 的外键和一个指向 SomeObject 的外键

如果有人知道如何解决这些问题并在我的查询集上获得两个注释,将不胜感激。

0 投票
1 回答
1177 浏览

python - django count 注释字段

Django 1.3,Python 2.7

我有以下模型(省略了一些不相关的字段):

我使用以下代码计算了每个主题的遭遇次数:

现在我想知道revcount每个revcount. 我尝试了以下方法:

但收到错误“无法计算计数('revcount'):'revcount' 是一个聚合”。有什么建议么?

注意:我需要产生的值e_in_s以及它的注释。

0 投票
2 回答
3301 浏览

django - Django:仅使用 annotate() 和 values() 计算非空 CharField

Django 建议不要使用nullon CharField,但是 annotate 在计数中包含空字符串。有没有办法在不从查询中排除具有空字符串的行的情况下避免这种情况?

我的问题不仅仅是如何实现我的查询,而是从根本上说,注释/聚合计数是否应该包含空字段。Django 认为空作为基于字符串的字段的 NULL 的替代品。

我的模型:

要按类别计算非空评论和分组,我使用

这不起作用,因为 annotate 也计算空值(如果条目为 NULL,则不会这样做)。我可以在 annotate 调用之前过滤掉空字符串,但我的查询更复杂,我需要所有空和非空对象。

有没有更聪明的方法来使用注释和跳过计数中的空值,或者我应该从

0 投票
0 回答
63 浏览

python - 注释中的多个连接

我有一个Post具有多对多关系的模型User来反映喜欢功能。此外Post,ForeignKey 与自身有关系,因为每个帖子都可以是对现有的评论Post(仅强制一个深度级别 - 没有讨论树)。

现在我正在尝试使用聚合来获得最活跃的讨论。我想计算每一个的分数,Post它是它的喜欢、评论和评论的喜欢的总和。

以下 SQL 完美运行:

当我尝试使用聚合时:

生成以下 SQL:

这不像我预期的那样工作。请注意主要区别: COUNT(DISTINCT T7."id") AS "clc" 与。 COUNT(T7."user_id") AS "clc"

是否有某种方法可以强制 django 进行计数id,而不是user_id使用聚合来实现第一个 SQL 返回等结果的更聪明的方法?

0 投票
1 回答
2690 浏览

django - unsupported operand type(s) for +: 'NoneType' and 'NoneType'

How can I handle this error, its driving me crazy:

Also

I get what its telling me (I think) so this is the code I wrote to try and battle it

View:

I figured what I was doing was setting their values to 0 before adding it up if it happened to be come up with none as a value. Is there another way to handle this so that when one of them does come up none, it gets set to zero so it can be added. Also when BOTH come up to none they can be set to 0 so that they can be added.

0 投票
0 回答
204 浏览

python - 在 Django 中执行两个注释值的总和

我已经对 Student 对象进行了注释,使其具有两个新字段-> project_count 和 member_count,如下所示:

top_students = Student.objects.annotate(project_count= Count('project'), member_count = Count('member_student'))

我现在想在数据库级别执行这两个值的总和。即返回类似:

我试过像这样使用 .extra() :

top_students = Student.objects.annotate(project_count= Count('project'), member_count = Count('member_student')).extra( select = {'total_count': 'project_count + member_count'}, order_by = ('total_count', ) )

但它显示一个错误:OperationalError: (1054, "Unknown column 'project_count' in 'field list'")

我应该编写原始 SQL 还是有其他方法可以做到这一点:

0 投票
2 回答
1319 浏览

django - Django - 使用 get_FOO_display 聚合

考虑以下:

其中status字段是一个CharFieldwith choices。这将产生一个字典列表,其中包含statusDB 值及其计数。

有没有办法聚合status并显示其显示值?我已经查看了_get_FIELD_display我可能可以模拟的代码,但是重复框架的内部代码感觉有点骇人听闻。