我想使用annotate
来计算模型中的出现次数,但是它没有按照法规使用组中的右侧字段。而不是使用我想要的字段(即计数函数中指定的字段),它使用模型的主键。 e.g。
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'))
它按字段放置了正确的组,但后来我无法访问模型中的其他字段。
如何指定在分组字段中使用resource_id?
答案 0 :(得分:0)
尝试:
ObjectHistory.objects.values.('resource').\
extra(select_params=('attribute1', 'attribute2'))\
.annotate(revisions=Count('resource'))
答案 1 :(得分:0)
使用记录为here
的原始方法e.g。
ObjectHistory.objects.raw(“SELECT *, COUNT(
resources_objecthistory
。resource_id
) ASrevisions
FROMresources_objecthistory
GROUP BYresources_objecthistory
。`RESOURCE_ID“)