问题标签 [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.
python - 如何将模型方法的结果注释到 django 查询集
来自djangoannotate()
文档:
使用提供的查询表达式列表注释 QuerySet 中的每个对象。表达式可能是一个简单的值,对模型(或任何相关模型)上字段的引用,或者...
是否可以为模型注释方法的结果?
我试过这样:
my_queryset.annotate(ann=my_method(request.user))
和
my_queryset.annotate(my_method(request.user))
但我得到一个my_method
未定义的错误。该方法存在并且正常工作:object.my_method(request.user)
我认为有一个装饰器可以将方法视为一个字段,但我似乎找不到任何相关信息(它可能是基于 django 模板的方法调用,所以可能不相关)
这个问题提供了另一种解决方案。但我想知道是否可以annotate
计算结果。
django - Django查询聚合与自身连接
使用以下模型,我想选择在验证状态下拥有最多帖子的 root 用户(在单个查询中或至少以优化的方式)。在我的情况下,root 用户不是直接作者,我想在 root 用户上聚合子用户作者。
这个问题可能与同一模型上缺少后向关系有关?
django - Django 1.11 注释子查询聚合
这是一个前沿功能,我目前正在使用它并很快就流血了。我想将子查询聚合注释到现有查询集上。在 1.11 之前执行此操作意味着自定义 SQL 或锤击数据库。这是 this 的文档,以及其中的示例:
他们在汇总上进行注释,这对我来说似乎很奇怪,但无论如何。
我正在为此苦苦挣扎,所以我将其直接还原为我拥有数据的最简单的真实示例。我有Carpark
包含许多Space
s 的 s。如果这让你更快乐,请使用Book→Author
,但 - 现在 - 我只想使用Subquery
* 来注释相关模型的计数。
这给了我一个可爱的印象ProgrammingError: more than one row returned by a subquery used as an expression
,在我的脑海中,这个错误非常有意义。子查询返回带有注释总数的空格列表。
这个例子表明某种魔法会发生,我最终会得到一个可以使用的数字。但这不是在这里发生的吗?如何注释聚合子查询数据?
嗯,我的查询的 SQL 中添加了一些东西……
我建立了一个新的停车场/空间模型并且它工作。所以下一步是找出是什么毒害了我的 SQL。在 Laurent 的建议下,我查看了 SQL 并试图使其更像他们在答案中发布的版本。这就是我发现真正问题的地方:
我已经突出显示了它,但它是那个子查询的GROUP BY ... U0."space"
. 出于某种原因,它正在重新调整两者。调查仍在继续。
编辑 2:好的,只要查看子查询 SQL,我就可以通过 ☹</p> 看到第二组
编辑3:好的!这两种模型都有排序顺序。这些正在执行到子查询。正是这些订单使我的查询膨胀并破坏了它。
我想这可能是 Django 中的一个错误,但没有在这两个模型上删除 Meta-order_by,有什么方法可以在查询时取消对查询的排序?
*我知道我可以为这个例子添加一个 Count 注释。我使用它的真正目的是一个更复杂的过滤器计数,但我什至无法让它工作。
django - Django在实例的其他字段上使用'when'注释many-2-many字段的单个实例
我有一个有点复杂的模型,所以我会尽力给出一个简化我当前状态和需求的例子。
我有一个查询集:
此查询集中的每个实例都有一个指向另一个模型的多对多字段,我们称之为“First_M2M”。First_M2M 对另一个模型有一个外键,对另一个模型(分别为 FkModel 和 Second_M2M)有一个多 2 多:
Second_M2M 有另一个多对多关系,Third_M2M:
现在这就是我想要做的:我想根据来自 second_m2m 实例之一的值订购我的 qs。但是,我需要选择它是哪个实例,这是通过查询 fk_model 中的一个字段(以确定 first_m2m 实例)和第三个_m2m 中的一个实例中的一个字段来完成的(这将确定 second_m2m)。
为了让它更有趣,订购的价值是 YAML。
这是我试图做的:
我相信我做错的是查询,这对 Django 来说不够连贯,无法确定它应该采用哪个实例。但我找不到我的问题。
任何帮助都感激不尽。
python - Django queryset 将字段注释为列表/查询集
我正在尝试使用 django 注释来创建查询集字段,该字段是一些相关模型属性的值列表。
我正在考虑将所有这些 id 与一些分隔符连接起来,但我不知道合适的功能。另一种解决方案是使 list_field 成为queryset
. 我知道这种语法是错误的。感谢您的任何帮助。
python - Django 嵌套聚合与 group_by
我有一个查询
这是我获取每个日期的指标总和并显示按周分组的平均结果的方式。不使用原始查询的 Django ORM 如何获得相同的结果。
到目前为止,我尝试了raw()
这个查询。我也可以得到内部的select
结果
python - Django中的复杂聚合
使用 Django rest framework 3.x 和Django 1.1.10
. 我有一个代表用户的模型。当我通过访问/users/
DRF 中的端点列出所有用户时,列表必须包含更多通过另一个模型(称为所有者)与用户相关的数据。每个项目都有一个所有者,所有者有用户。
我在 User 模型上创建了一个额外的属性,它只返回一个 JSON 数据数组。这是我无法改变的,因为这是前端的要求。我必须返回与每个用户相关的项目总数,并且要执行三种不同的计数来获取数据。
我需要在同一模型上获得多个 count() 的项目,但条件不同。
分别做这些很容易,两个是微不足道的,最后一个更复杂:
问题是因为这是为每个用户运行的,而且其中有很多用户。最后,这会生成 300 多个数据库查询,我希望将这些查询降到最低。
到目前为止,我想出了这个:
这将聚合前两个计数,返回它们,并且只会SELECT
在数据库上执行一个。有没有办法将最后一次count()
通话合并到同一个电话中aggregate()
?
我尝试了很多东西,但似乎不可能。我应该只写一个自定义SELECT
并使用Item.objects.raw()
吗?
我还注意到在我的开发机器和 SQLite 上执行aggregate()
最后一个count()
比在使用 Postgresql 的登台服务器上更快,这有点奇怪,但这不是我现在主要关心的问题。
django - 与 django 不同的无效
我尝试在我的 Django 项目中获取汽车列表,但我遇到了 ORM 问题
使用 Car.objects.all() 我有一个列表:
我想要的是:
然后,所有汽车的名称都是不同的,无论车主是谁
我尝试过类似的东西
但我仍然拥有所有汽车。有人可以帮我解决这个问题吗?文档建议注释和聚合,但仍然很难理解。
python - Django注释不带回不同
我正在尝试使用 annotate 查询 Django 中的查询集,以获取每个不同的“field2”的计算。查询如下所示:
虽然我期望它返回如下所示的内容:
[{'field2_value1': '1'}, {'field2_value2': '2'}]
我收到相同 field2 值的多个条目。所以它看起来更像这样:
[{'field2_value1': '1'}, {'field2_value1': '2'}, {'field2_value1': '5'},{'field2_value2': '2'}, {'field2_value2': '1'} ]
正如我在其他问题中看到的那样,我在查询中有 order_by() 有时很重要,但这对我没有帮助。我如何查询它以只为每个唯一的 field2 值返回一个条目?
python - Django Naturaltime 在 .annotate 中不起作用
在这里,我只想在模型上注释一个字段,该字段提供人类可读的格式,说明自创建以来经过了多少时间
我的型号说明:
我所做的是在这里
在这个打印电话中,我得到了DateTimeField
我在模型中使用的那个。但是如果我想访问该属性。
有用。
有什么帮助吗?TIA。