Аннотирование аннотированного поля в Django
Я пытаюсь Count
на поле, которое генерируется предыдущим Count
в Django. Вот упрощенная модель:
class CountryUpdate(models.Model):
country = models.CharField()
date = models.DateTimeField()
При каждом обновлении какой-либо страны появляется новая запись. Вычисление количества обновлений для каждой страны достаточно хорошо документировано:
CountryUpdate.objects.values("country").annotate(total=Count("country"))
Сейчас я хотел бы подсчитать, сколько раз страна была обновлена X раз.
В принципе, если бы у меня были следующие записи:
Country | Date |
---|---|
Germany | 2021 |
Germany | 2022 |
France | 2021 |
Italy | 2021 |
Spain | 2021 |
Я хотел бы получить следующий вывод:
Number of updates | Count |
---|---|
1 | 3 |
2 | 1 |
Я пробовал аннотировать предыдущий набор вопросов, но это не работает.
value = (
CountryUpdate.objects
.values("country")
.annotate(total=Count("country"))
.values("total")
.annotate(global_total=Count("total"))
)
Это дает ошибку
Cannot compute Count('total'): 'total' is an aggregate
Этот SQL-запрос выводит именно то, что нужно, но у меня не получается поместить его в Django:
SELECT total, count(total)
from (SELECT "country_update"."country",
COUNT("country_update"."country") AS "total"
FROM "country_update"
GROUP BY "country_update"."country") as t
group by total;