2010-06-07 47 views
3

我想使用annotate來計算我的模型中出現的次數,但是它沒有通過陳述使用組中的右側字段。而不是使用我想要的字段(即在count函數中指定的字段),它使用模型的主鍵。例如在django 1.2中指定按字段分組1.2

ObjectHistory.objects.annotate(revisions=Count('resource')) 

產生SQL

SELECT *, COUNT(`resources_objecthistory`.`resource_id`) AS `revisions` FROM `resources_objecthistory` GROUP BY `resources_objecthistory`.`history_id` 

其中history_id是ObjectHistory

主鍵

我要的是:

SELECT *, COUNT(`resources_objecthistory`.`resource_id`) AS `revisions` FROM `resources_objecthistory` GROUP BY `resources_objecthistory`.`resource_id 

我發現,通過把

ObjectHistory.objects.values.('resource').annotate(revisions=Count('resource')) 

它把正確的組按字段,但然後我沒有訪問模型中的其他領域。

如何指定在group by字段中使用resource_id?

回答

0

用作記錄here

原始方法例如

ObjectHistory.objects.raw( 「SELECT *, COUNT(resources_objecthistoryresource_id) AS revisions FROM resources_objecthistory GROUP BY resources_objecthistory .`resource_id」)

0

嘗試:

ObjectHistory.objects.values.('resource').\ 
    extra(select_params=('attribute1', 'attribute2'))\ 
    .annotate(revisions=Count('resource'))