问题标签 [django-annotate]

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 投票
0 回答
939 浏览

django - 使用带有 DateTimeFields 的 F() 表达式的 Django 注释

我想为具有 DateTimeField("installed_date" field) 和 IntegerField ("expiration_days") 的模型编写自定义 QuerySet 和 Manager,并且我想根据规则“'installed_date'加上'expiration_days'过滤对象在当天之前”,以便获取当前到期的对象。

例如:

像以前一样尝试时,我得到错误“'str'对象没有属性'get_lookup'”

也试过这个:

在这里我得到“名称'days_since_installed_date'未定义”。如果我将“days_since_installed_date”封装在前面代码的过滤器部分内的 F() 表达式中,我会得到“运算符不存在:整数 > 间隔”。

而且我一直在尝试基于 StackOverflow 答案的更多食谱,但仍然遇到各种错误。

我正在使用 Python 3.5、Django 1.11 和 Postgres。

任何人都可以提出一种方法吗?

(另外,如果有人可以参考有关根据日期查询 django db 的教程将不胜感激)

0 投票
1 回答
5112 浏览

django - Django - 'WhereNode' 对象没有属性 'output_field' 错误

我正在尝试从我的模型中查询和注释一些数据:

以下查询中未使用其他字段,因此我在此处跳过它们。

在我看来,我需要获取经过身份验证的用户的所有提要的查询集。注释应包含所有未删除部分的数量。

最初,Piece模型不包含removed字段,并且查询集的一切都很好,如下所示:

但是后来我将该字段添加removedPiece模型中,并且只需要计算未删除的部分:

它给了我以下错误:

这只是 django 在错误页面上输出的一小部分,所以如果还不够,请让我知道我的问题中还需要包含什么。

我试图在这里和那里包含或(正确导入)之output_field类的选项,但出现了一些我没有在此处提供的错误,因为我认为这些操作毫无意义。models.IntegerField()models.FloatField()

我正在使用 Django 2.0.3

0 投票
1 回答
386 浏览

django - 结合相同模型Django的2个对象

有没有办法将同一模型的 2+ 个对象与所有字段的总值组合/合并为 1。

我的意思是,Author.objects.annotate(Sum('book__pages'))但对于模型中的所有字段。

1 个对象 -{'user':2, 'events':20, 'time': 233}

2 对象 -{'user':2, 'events':10, 'time': 400}

需要总计 -{'user':2, 'events':30, 'time': 633}

谢谢

0 投票
0 回答
488 浏览

django - Django 创建一个子表

我有以下三个模型:

现在我想获取计算出他们获得的所有分数以及他们在所有游戏会话和分支会话中花费的时间的人员列表,我目前使用的查询如下:

问题是该查询将所有表连接在一起,因此对于每个表,PersonSession我们可能有很多GameSession,并且结果表包含人员会话的重复行,这会导致人员会话的时间重复汇总并生成错误的结果。

在 sql 查询中,我必须首先构造一个包含游戏 socres 总和的子表,然后将该表与人员会话连接起来,但我不知道这在 django 中怎么可能?

我正在使用 django 1.11 和 postgres。

0 投票
0 回答
376 浏览

python - Django ORM 查询集将整数字段作为字符串

“操作”字段为整数类型。此代码创建一个 sql 查询,但在 sql 结果中,“when”参数显示为字符串类型。所以它不起作用。

这样的sql输出。我怎么解决这个问题?

0 投票
0 回答
62 浏览

django - 使用 Count 进行注释会使用 NullBooleanField 产生不正确的值

我正在使用一些注释执行以下查询:

但是,会num_unaccepted产生不正确的值。首先,如果我有奖项,这个数字有时是我预期的两倍。但是如果我删除

从注释中,然后加倍问题就消失了。

其次,num_unaccepted如果没有奖励,则值为 1。但是当有奖励时,值是正确的(但由于我之前提到的加倍问题,并非所有情况都正确)。在这第二期中,我怀疑这可能是因为它正在评估该奖项是None,但我真正想要的是它检查该accepted领域是否是None。然后,如果该奖项不存在,就不要计算它。该accepted字段是一个NullBooleanField.

我应该如何以不同的方式编写这个来解决这两个问题num_unaccepted

编辑

total_awarded=Sum('award__awardissuedactivity__units_awarded')从注释中删除并创建了一个单独的函数来获得total_awarded我需要的数量。这解决了我的第一个问题,但第二个问题仍然存在。

0 投票
3 回答
7107 浏览

django - Django 条件子查询聚合

我的模型结构的一个简化示例是

现在我想显示一个显示公司的表格,其中一列将包含某种类型的部门数量,例如type=10。目前,这是通过Corporation模型上的帮助器来实现的,用于检索那些,例如

这里的问题是,由于 N+1 问题,这绝对会破坏性能。

我试图用select_relatedprefetch_relatedannotate和来解决这个问题subquery,但我无法得到我需要的结果。

理想情况下,Corporation查询集中的每个都应该用一个整数注释,该整数type_10_count反映了该类型部门的数量。

我确信我可以用原始 sql 做一些事情.extra(),但是文档宣布它将被弃用(我在 Django 1.11 上)

编辑:原始 sql 解决方案示例

0 投票
1 回答
3675 浏览

django - Django 使用转换变量进行注释

我想用 django 查询集来实现一些复杂的东西。我的模型如下所示:

很遗憾,

score' 不能从 CharField() 更改为 FloatField()

,它应该被保存为一个字符串。

我需要的是按年份和月份汇总所有分数。我尝试了这样的方法来对所有分数进行分组,但没有取得很大成功。

在使用注释之前,我尝试通过这样做来投射“分数”。

再一次没有成功,因为我得到了 scoreFloat 参数的 KeyError 。

有什么建议么?

0 投票
1 回答
1602 浏览

django - 针对 django 石墨烯上的 graphql 查询返回带注释的查询集

我正在使用以下查询集来获取某个项目下的所有客户,这些客户由最后发消息的人订购。

现在我想根据带注释的查询集使用基本的石墨烯查询(不是中继)来获取项目以及与该项目关联的客户。我可能还有第二个用例,我需要根据 Customer 表中的字段(例如,具有 is_deleted=False 的客户)过滤 project.customers.all() 查询集。

目前在我的graphql模式中,我有,

在这里,当我尝试通过提供项目 ID 单独获取客户列表时,它显示错误:“收到不兼容的实例...”

关于如何从项目节点中获取客户列表并作为单独的 top_chat_customers 查询的任何想法?

任何帮助表示赞赏。谢谢!

0 投票
1 回答
293 浏览

django - Django 2.0 Queryset 注释日期

有没有办法在数据库注释调用中将 F() 表达式传递给诸如 dateutil 的relativedelta之类的函数。

鉴于以下情况,InterestLoan.objects.active_loans(start_date='2018-01-01', end_date='2019-01-01')将返回给定期间内活跃贷款的查询集 a。end_date需要使用start_date + term进行注释

相反,我得到 TypeError: bad operand type for unary +: 'F'