问题标签 [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 投票
1 回答
1838 浏览

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

0 投票
0 回答
645 浏览

python - Django按日期注释数据以获得空结果

假设我有一个对象模型 A,它有一个名为 created 的字段,它是一个 datetime 类型的字段。

如果我使用 annotate 来计算每天创建了多少个 A,我可以使用

之后,我可以得到结果,看起来像

但是,请注意我错过了 2018-07-24,因为它在那天没有创建任何 A。有没有办法让结果{date: '2018-07-24', count:0 }在那个查询集中?

0 投票
2 回答
3457 浏览

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.

0 投票
1 回答
231 浏览

python - Django注释模型并过滤特定值

我试图进入 djangos 注释,但不能完全弄清楚它是如何工作的。

我有一个函数,我想注释客户的查询集,过滤它们并返回客户的数量

现在对于过滤器部分,这就是我在弄清楚如何做到这一点时遇到的问题。我要过滤的是 my received_signatures,这是在我的 customer.py 中调用的函数

brough_signature是一个数据库字段

那么如何注释查询集,过滤收到的签名,然后返回一个数字?

相关型号信息:

注意:参与者和注册可以拥有brought_signature. 我在我的程序中有一个设置,允许我 A) 仅在我的参与者处标记bred_signature(这意味着他为他的所有注册带来了签名)或 B) 为他拥有的每个注册标记bred_signature

对于这种情况,选项 B) 是相关的。我用received_signatures我检查客户是否为他的状态为“1_YES”的每个注册带来了每个签名,我想计算所有这样做的客户并返回一个数字(然后我在另一个函数中用于 pygal 图表)

0 投票
2 回答
97 浏览

python - Django 模型:通过从模型中分组查找平均值

我一直在尝试找到对 get 查询集进行评分的平均值。

这是我的models.py

view.py中的代码

我需要从这个给定的模型中找到评分最高的 5 部电影。但不知道如何分组查询可以找到平均值。上述查询未提供正确答案。我可以参考的其他答案或文档的任何链接?

0 投票
2 回答
11310 浏览

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"))

但是,这不起作用,因为我需要计算特定的医生查询集。

我已经关注了这些链接

但是,我没有得到相同的结果:

如果您有任何问题可以更清楚地说明这一点,请告诉我。

0 投票
0 回答
34 浏览

django - 复杂的 django 注释

我有以下型号:-

我想用计算如下的分数来注释组中的所有玩家:-

在最近 10 场比赛中没有球员受伤的比赛中,如果他们被选中,得 5 分。

如果我忽略“未受伤”子句,我可以使用 Sum/Case/When 来执行此操作,方法是在 Player 上使用如下所示的管理器方法:-

但是添加“受伤”子句意味着我不能像开始那样使用那个 for_games 变量。

我怀疑它可以使用 Subquery 和 OuterRef 来完成,但我无法弄清楚我需要的确切语法。

有任何想法吗?

0 投票
2 回答
869 浏览

python - Django过滤任何日期范围包含的日期

我正在尝试过滤具有DateField(日期)的模型以检索queryset其日期在列表中的任何一个中的实例,DateRanges但我正在努力找出我需要的确切逻辑。

例如,如果我有以下模型:

并且我创建了 3 个不同的日期范围,如何获取日期在这 3 个日期范围之一的所有游戏的列表?

我知道我可以遍历范围并为此使用链式Q()过滤器,但我需要将这一切都放在一个大的注释中,queryset这将不得不使用子查询,这样就不起作用了。

我目前的努力是这样的:-

但这不起作用,因为contained_by它与一个日期范围进行比较,而是一个queryset日期范围。

感觉就像我很接近,但我一定错过了一些愚蠢的事情。

有任何想法吗?

0 投票
2 回答
894 浏览

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|空|

0 投票
1 回答
2678 浏览

python - 在 Django + Python 3 中格式化日期以注释计数

我目前正在尝试根据它们出现的次数来注释和计算一些日期。

如果我在 for 循环中打印这个,

我会在 Json 中取回以下内容。

这是一个正确的方向,但是,它正在计数到秒.. 我只需要几天,以便在 2018 年 10 月 5 日发生的事件将被计数:例如 2。

谁能引导我走向正确的方向?

此外,将日期转换为更 json / api 友好的最“django”方式是什么?

我理想的 json 返回会是这样的

谢谢!