django ORM:进行查询

时间:2010-07-02 16:34:44

标签: python django orm

  

可能重复:
  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

请帮我完成此查询

1 个答案:

答案 0 :(得分:2)

你需要一些Aggregation

在您的案例中您需要做的是两件事:首先,使用values强制查询GROUPBY,然后使用内置函数Min和{{1}注释您的查询}

如果我的django-orm fu是正确的,你的查询应该是这样的:

Count

需要注意的关键事项:您需要在任何注释之前放置from django.db.models import Min, Count Competition.objects.values('domain').filter(word_id=1545).annotate(id=Min('id'), cnt=Count('id')) 调用以强制它进入GROUPBY,其余部分是非常自我解释的。

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