2014-01-22 43 views
-1

如何为以下MySQL查询执行的Django查询:Django的查询,GROUPBY,计数()

This is Django model 
class Passengers(models.Model):  
    id = models.CharField(max_length=128)   
    ref = models.CharField(max_length=128) 
    orgId = models.ForeignKey(Organization) 
    number = models.CharField(max_length=128) 

MYSQL 
------ 
SELECT `ref` , count('id') 
FROM `dispatcher_passengers` 
WHERE `orgId_id` =1 
GROUP BY `ref` 

我有ID,参考列的模型。

我想用'ref'得到count(id)。

所以我怎么能写在Django查询集格式上面的查询。

+0

请出示你的Django模型,否则我们不得不猜想他们叫什么。 – Alasdair

+2

给文档一个机会https://docs.djangoproject.com/en/dev/topics/db/aggregation/ – pleasedontbelong

回答

0

怎么样这样:

refs = Passengers.objects.values('ref') 
refs = set(refs) 
ref_count = lambda ref: Passengers.objects.filter(ref = ref).count 
counts = [ (ref, ref_count(ref)) for ref in refs ] 

更新:

from django.db.models import Count 
count = Passengers.objects.values('ref').annotate(Count('id')).order_by()