【问题标题】:django ORM: make query [duplicate]django ORM:进行查询[重复]
【发布时间】:2011-03-11 04:45:39
【问题描述】:

可能重复:
Django equivalent for count and group by

我正在学习 django。在我的项目中,我无法使用 django ORM 进行查询:

SELECT MIN( id ) AS id, domain, COUNT( * ) AS cnt
FROM app_competition 
WHERE word_id = 1545
GROUP BY domain

请帮我做这个查询

【问题讨论】:

标签: python django orm


【解决方案1】:

为此,您需要一些Aggregation!

在您的情况下,您需要做两件事:首先,使用values 在您的查询上强制使用 GROUPBY,然后使用内置函数 Min 和 Count 注释您的查询

如果我的 django-orm fu 是正确的,您的查询应该如下所示:

from django.db.models import Min, Count

Competition.objects.values('domain').filter(word_id=1545).annotate(id=Min('id'), cnt=Count('id'))

需要注意的关键事项:您需要在任何注释之前放置 values 调用以强制它为 GROUPBY,然后其余的就很容易解释了。

没有测试查询所以我希望我做对了:)

【讨论】:

    猜你喜欢
    • 2018-05-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-12
    • 2022-01-07
    • 2013-06-09
    • 2018-08-26
    • 1970-01-01
    相关资源
    最近更新 更多