问题标签 [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.
django - Django在返回时添加反向外键的值作为字段
我有两个模型。一种是任务模型,另一种是奖励模型。
现在我想返回一个任务查询集以及其中的奖励字段。我试过这个查询。search_res = Task.objects.annotate(reward='reward')。
我收到此错误:注释“奖励”与模型上的字段冲突。 请告诉如何解决这个问题。我想要在每个任务对象中获得现场奖励。
python - 如果我在长度为 1 的 QuerySet 上使用 first() 与 last() 为什么会得到不同的结果
在为一个方法编写测试用例时,我发现如果我使用 my_queryset.first().my_annotated_value 与使用 my_queryset.last().my_annotated_value 时会得到不同的结果,尽管 my_queryset.count() 返回 1。
这是相关的代码片段:
在我运行的外壳中:
我有不同的 django 应用程序用于shops
,matches
和.employees
customers
我搜索了几个小时并检查了 django 文档中 first() 和 last() 的实现。我找不到任何解释这种行为的东西。
为什么价值观不同,到底发生了什么?我做错了什么还是这是一个错误?
python - Django 查询求和 ArrayFields 的长度
我有这个模型:
我正在尝试弄清楚如何在 Django 中执行与此 SQL 查询等效的操作:
- 我试过了
extra(select={codes_len':'cardinality(codes)'})
,但你不能annotate
或aggregate
超过一个extra
领域。 - 我试过了
annotate(Sum("cardinality('codes')"))
,但cardinality('codes')
不是模型上的一个字段。 - 我研究了编写一个自定义聚合字段,它结合了
Sum
和cardinality
,但看起来……很脆弱。 - 我在文档中发现
__len
确实可以在 上正常工作ArrayField
,但在annotate(Sum('codes__len'))
. - 我排除了原始 SQL,因为有很多
WHERE
语句(这里省略)使得这个查询难以手动重建。
在这一点上,我想我别无选择,只能在模型中添加一个字段长度的codes
字段并弄乱以save()
使其保持同步。
真的没有别的办法了吗?我错过了什么吗?
django - Django 在 Annotate Count 中递增 Then 值
假设我有查询集 A。
现在,每次A.name == 'Jack'
都c
将设置为 I。每次发生这种情况时,如何增加 I?所以对于第一种情况,I = 1
对于第二种情况,I=2
等等。
django - GeoDjango:距离对象不可序列化
我只是在学习geo-django。我可以从一个点找出所有地方的距离。但是当我.values
对带注释的字段使用方法时distance
,我得到了
TypeError: Object of type 'Distance' is not JSON serializable
这是我的代码片段
现在我的代码片段是这样的
这里的值p
是这样的
所以我在这里需要的'distance': 7596021.71574835
只是'distance': Distance(m=7596021.71574835)
对此有什么帮助吗?提前致谢。
django - django 用模型字段名称注释值
我有以下型号
我正在尝试注释状态字段,以便结果将保存可读值而不是状态代码。这就是我想要做的:
结果是一个例外:
为什么要限制注释而不是额外验证相同的行为?有什么方法可以覆盖对注释的限制并节省我手动构建查询的时间吗?
django - django - annotate() - 列的 Sum() 与另一列上的过滤器
我有以下两个模型。
和
我需要列出所有带有stock_in_sum=Sum(of all stock ins)
,stock_out_sum=Sum(of all stock outs)
和blance_stock=opening_stock+stock_in_sum - stock_out_sum
这是我迄今为止所取得的成就。
我需要得到
stock_in_sum
作为sum(quantity) where ttype='I'
stock_out_sum
作为sum(quantity) where ttype='O'
blance_stock
作为product.opening_stock + stock_in_sum - stock_out_sum
以及每个 Product 对象。
我如何实现这一目标?
谢谢。
python - 每天时间范围内的 Django 注释
我正在使用以下查询来获取每天的总和:
正如预期的那样,每天午夜 00:00 都会发生变化!我想更改此行为,以便在每天06:00 到 06:00 期间生成总和。我认为使用会做,但我在 django 查询方面没有经验。datetime__range = ..
谢谢...
django - django 使用基于查询的聚合值注释模型
假设我有以下模型结构:
我正在尝试从 ParentViewSet
恢复以下内容:
- 孩子的数量。
- 当 'state' 为 True 时,'num' 字段的总和。
我可以执行以下操作:
这给了我 (1) 但不是 (2) 它给了我所有孙辈的总和。如何在确保所有Parent
对象仍在 QuerySet 中的同时适当地过滤孙子?
python - Django 自定义复杂 Func(sql 函数)
在通过 exact 为 Django ORM order找到解决方案的过程中,我创建了一个自定义 django Func:
其工作原理如下:
但正如@hynekcer 评论的那样:
“它很容易崩溃,因为应用程序的
') in '') from myapp_suburb; drop ...
名称是“myapp and autocommit is enabled”。
主要问题是额外数据 ( substring
) 在没有 sqlescape 的情况下进入模板,这使应用程序容易受到 SQL 注入攻击。
我找不到 Django 的保护方法。
我创建了一个repo (djposfunc),您可以在其中测试任何解决方案。