问题标签 [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 中使用具有不同字段类型的 annotate 和 Case
我有这些领域的模型:
我想使用带有这些规则的注释和案例对该模型进行查询:
- 当 parent 为 null 时,它返回 text_code 字段
- 当 parent 不为 null 时,它返回 parent__number 字段
我可以使用 PostgreSQL 中的 SQL 来实现,例如:
但我不能用 Django ORM 做到这一点。我尝试了以下方法:
但是当我调用查询结果时,它会引发以下错误:
django.db.utils.ProgrammingError:CASE 类型字符不同且整数无法匹配
我知道这是一个数据库错误,因为 django 构造的 SQL 结果没有::integer添加。
我该如何解决这个问题?我正在使用 Django 1.11
python - Django按日期注释数据以获得空结果
假设我有一个对象模型 A,它有一个名为 created 的字段,它是一个 datetime 类型的字段。
如果我使用 annotate 来计算每天创建了多少个 A,我可以使用
之后,我可以得到结果,看起来像
但是,请注意我错过了 2018-07-24,因为它在那天没有创建任何 A。有没有办法让结果{date: '2018-07-24', count:0 }
在那个查询集中?
django - Django - annotate with multiple Count
I have a model called Post
which has two fields upvotes
and downvotes
. Now, upvotes
, downvotes
are ManyToManyField
to a Profile
. This is the model:
So, I want to fetch all the posts such that they are in the order of
total(upvotes) - total(downvotes)
So I have used this query:
The problem with this query is the total_votes
is always turning out to be zero.
The below queries will explain the situation:
Seems like both up
and down
are having the same value(which is actually the value of up
). How can I solve this?
I have tried this:
but even this gives the same output.
python - Django注释模型并过滤特定值
我试图进入 djangos 注释,但不能完全弄清楚它是如何工作的。
我有一个函数,我想注释客户的查询集,过滤它们并返回客户的数量
现在对于过滤器部分,这就是我在弄清楚如何做到这一点时遇到的问题。我要过滤的是 my received_signatures
,这是在我的 customer.py 中调用的函数
brough_signature
是一个数据库字段
那么如何注释查询集,过滤收到的签名,然后返回一个数字?
相关型号信息:
注意:参与者和注册可以拥有brought_signature
. 我在我的程序中有一个设置,允许我 A) 仅在我的参与者处标记bred_signature(这意味着他为他的所有注册带来了签名)或 B) 为他拥有的每个注册标记bred_signature
对于这种情况,选项 B) 是相关的。我用received_signatures
我检查客户是否为他的状态为“1_YES”的每个注册带来了每个签名,我想计算所有这样做的客户并返回一个数字(然后我在另一个函数中用于 pygal 图表)
python - Django 模型:通过从模型中分组查找平均值
我一直在尝试找到对 get 查询集进行评分的平均值。
这是我的models.py
view.py中的代码
我需要从这个给定的模型中找到评分最高的 5 部电影。但不知道如何分组查询可以找到平均值。上述查询未提供正确答案。我可以参考的其他答案或文档的任何链接?
python - 使用子查询注释计数
请帮助我,我已经坚持了太久了:(
我想做的事:
我有这两个模型:
我想用具有该专业的医生数量来注释查询集中的所有专业。
到目前为止我的解决方案:
我经历了一个循环,我做了一个简单的: Doctor.objects.filter(specialization=spec).count()
但是事实证明这太慢且效率低下。我读的越多,我就越意识到使用SubQuery
这里来过滤OuterRef
专业化的医生是有意义的。这就是我想出的:
对于每个专业,我得到的输出只有 1。代码只是用它注释每个医生对象,specialization_id
然后注释该组中的计数,这意味着它将是 1。
不幸的是,这对我来说并不完全有意义。在我最初的尝试中,我使用了一个聚合来计数,虽然它本身可以工作,但它不能作为 a 工作SubQuery
,我得到了这个错误:
This queryset contains a reference to an outer query and may only be used in a subquery.
我之前发布过这个问题,有人建议这样做Specialization.objects.annotate(count=Count("doctor"))
但是,这不起作用,因为我需要计算特定的医生查询集。
我已经关注了这些链接
但是,我没有得到相同的结果:
https://docs.djangoproject.com/en/1.11/ref/models/expressions/
https://medium.com/@hansonkd/the-dramatic-benefits-of-django-subqueries-and-annotations-4195e0dafb16
如果您有任何问题可以更清楚地说明这一点,请告诉我。
django - 复杂的 django 注释
我有以下型号:-
我想用计算如下的分数来注释组中的所有玩家:-
在最近 10 场比赛中没有球员受伤的比赛中,如果他们被选中,得 5 分。
如果我忽略“未受伤”子句,我可以使用 Sum/Case/When 来执行此操作,方法是在 Player 上使用如下所示的管理器方法:-
但是添加“受伤”子句意味着我不能像开始那样使用那个 for_games 变量。
我怀疑它可以使用 Subquery 和 OuterRef 来完成,但我无法弄清楚我需要的确切语法。
有任何想法吗?
python - Django过滤任何日期范围包含的日期
我正在尝试过滤具有DateField
(日期)的模型以检索queryset
其日期在列表中的任何一个中的实例,DateRanges
但我正在努力找出我需要的确切逻辑。
例如,如果我有以下模型:
并且我创建了 3 个不同的日期范围,如何获取日期在这 3 个日期范围之一的所有游戏的列表?
我知道我可以遍历范围并为此使用链式Q()
过滤器,但我需要将这一切都放在一个大的注释中,queryset
这将不得不使用子查询,这样就不起作用了。
我目前的努力是这样的:-
但这不起作用,因为contained_by
它与一个日期范围进行比较,而是一个queryset
日期范围。
感觉就像我很接近,但我一定错过了一些愚蠢的事情。
有任何想法吗?
django - Django admin自定义字段按条件获取最新相关对象的结果
我有三个模型
我也有两个在管理员
我想添加自定义字段 (last_activity_planned_date) 以在 CustomerAdmin 的 changelist_view 上显示和排序。条件如下: - 显示客户最新活动的计划执行日期,但前提是此活动的 status_id = 2。否则不显示
示例 1
客户 1 有 2 个活动 - 最新的有 status_id = 2 和planned_execution_date = 2017-09-17
更改列表视图:
|id|last_activity_planned_date|
|1|2017-09-17|
示例 2
客户 1 有 2 个活动 - 最新的有 status_id = 3 和planned_execution_date = 2017-09-27
|id|last_activity_planned_date|
|1|空|
python - 在 Django + Python 3 中格式化日期以注释计数
我目前正在尝试根据它们出现的次数来注释和计算一些日期。
如果我在 for 循环中打印这个,
我会在 Json 中取回以下内容。
这是一个正确的方向,但是,它正在计数到秒.. 我只需要几天,以便在 2018 年 10 月 5 日发生的事件将被计数:例如 2。
谁能引导我走向正确的方向?
此外,将日期转换为更 json / api 友好的最“django”方式是什么?
我理想的 json 返回会是这样的
谢谢!