我有一個Django的模型,看起來像這樣(我修剪爲簡潔一些細節):無法在Django查詢組和值
class Resource(models.Model):
role = models.ForeignKey('Role')
project = models.ForeignKey('Project')
start_date = models.DateField
percentage = models.DecimalField
我有一幫行此表與各種percentage
值,我想總結他們每個獨特的start_date
。在手工數據庫玩,我發現SQL要做到這一點:
SELECT start_date, SUM(percentage) AS "total"
FROM myapp_Resource
GROUP BY start_date
當我嘗試使用Django的機制來獲得類似的查詢,我必然會得到錯誤的事情。我認爲下面的代碼會給我什麼,我想:
Resource.objects.values('start_date').annotate(total = Sum('percentage'))
不幸的是,它返回下面的查詢:
SELECT start_date, SUM(percentage) AS "total"
FROM myapp_resource
INNER JOIN myapp_role ON (myapp_resource.role_id = myapp_role.id)
GROUP BY start_date, myapp_role.name
ORDER BY myapp_role.name ASC
這哪裏是內部聯接來了呢?我沒有明確表示有加入;我對這一專欄甚至沒有興趣!我的ForeignKeys是否會以某種方式咬我?我嘗試了annotate的變體,但無濟於事。任何指針將不勝感激。
它的按部分順序導致內部連接...你需要追蹤是什麼導致該子句被添加 – Anentropic
你有'Resource.Meta'這樣的東西http://stackoverflow.com/a/7497149/ 202168? – Anentropic