如何在django的trunk版本中通過查詢創建簡單羣組?group by by django
我需要這樣的東西
SELECT name
FROM mytable
GROUP BY name
其實我想要做的就是簡單地得到具有不同的名稱的所有條目。
如何在django的trunk版本中通過查詢創建簡單羣組?group by by django
我需要這樣的東西
SELECT name
FROM mytable
GROUP BY name
其實我想要做的就是簡單地得到具有不同的名稱的所有條目。
添加.distinct到您的查詢集:
Entries.objects.filter(something='xxx').distinct()
這是行不通的,因爲每一行都有唯一的ID。所以每一條記錄是不同的..
解決我的問題,我用
foo = Foo.objects.all()
foo.query.group_by = ['name']
但這並不是官方的API。
如果你需要的所有不同的名稱,只是這樣做:
Foo.objects.values('name').distinct()
,你會得到一個字典列表,每一個有名關鍵。如果您需要其他數據,只需將更多屬性名稱作爲參數添加到.values()調用中即可。當然,如果添加可能在具有相同名稱的行之間有所不同的屬性,則會破壞.distinct()。
如果你想獲得完整的模型對象,這將無濟於事。但無論如何,獲取不同的名稱和獲取完整的數據本身就是不相容的目標;你怎麼知道哪個有你想要的全名返回的給定名字?如果您想爲給定名稱的所有行計算某種聚合數據,最近將aggregation support添加到了Django主幹中,並且可以爲您解決這個問題。
堆棧溢出使用Markdown格式化,而不是BBcode或任何它。請編輯您的帖子並使用四個indendation空格來標記您的代碼塊。 – 2009-01-26 15:38:49
[Django等同於count和group by]的可能重複(http://stackoverflow.com/questions/327807/django-equivalent-for-count-and-group-by) – 2010-12-13 12:54:27