Подсчитывать все случаи, когда дата попадает в диапазон

Я пытаюсь подсчитать каждый раз, когда значение месяца в created_on попадает в разные месяцы, используя этот django orm ниже:

    result_qs = Model.objects.all().annotate(
        spring=Count(Case(When(ExtractMonth("created_on") in [1, 2, 3, 4, 5], then=1))),
        summer=Count(Case(When(ExtractMonth("created_on") in [6, 7], then=1))),
        fall=Count(Case(When(ExtractMonth("created_on") in [8, 9, 10, 11, 12], then=1))),
        year=ExtractYear("created_on")
)

Я получаю ошибку

When() поддерживает объект Q, булево выражение или поиск в качестве условия. условие.

Когда я применяю обозначения Q к одному из случаев, например:

spring=Count(Case(When(Q(ExtractMonth("created_on") in [1, 2, 3, 4, 5], then=1)))),

невозможно распаковать неитерабельный bool объект

Есть предложения?

Вы можете попробовать что-то вроде этого:

result_qs = Model.objects.all().annotate(
        spring=Count(Case(When(created_on__month__in=[1, 2, 3, 4, 5], then=1))),
        summer=Count(Case(When(created_on__month__in=[6, 7], then=1))),
        fall=Count(Case(When(created_on__month__in=[8, 9, 10, 11, 12], then=1))),
        year=ExtractYear("created_on")
)
Вернуться на верх