Я хочу использовать annotate
для подсчета количества вхождений в моей модели, однако оно не использует правильное поле в группе по оценке. вместо того, чтобы использовать поле, которое я хочу (то есть поле, указанное в функции count), он использует первичный ключ модели. например,
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 в группе по полю?