2014-02-09 40 views
1

我有一個代表食物的模型。Django按最頻繁值排序

class FoodTruck(models.Model): 
    name = models.CharField(max_length=30) 
    location = models.TextField() 
    creation_date = models.DateTimeField(default=datetime.now) 
    start_date = models.DateTimeField(null=True, blank=True) 

    def __unicode__(self): 
     return self.name 

該表格中會有很多行具有相同的名稱(但位置不同)。在我看來,我想按名稱排序(發生率最高)。

示例表:

name | location | creation_date | start_date 
clover | ABC | ... 
chens | XYZ | ... 
clover | ABC | ... 

我的目標是列出了食品的卡車又多少次,他們已經在出現在所有地點,用最頻繁的人第一次排序的最後30天。

回答

3

這是聚合工作。

from django.db.models import Count 
FoodTruck.objects.values_list('name').annotate(truck_count=Count('name')).order_by('-truck_count') 
+0

這是錯誤的。您需要通過'from django.db.models import Count'導入Count。注意.models。 –

+0

'Count('*')'在表達式中也適用於我。 – Tuttle