Czy próbowałeś spojrzeć na swój schemat? Myślę, że właśnie pomyliłeś nazwę kolumny.
Zakładając, że używasz Djnago>=1.8, możesz również uniknąć całego problemu, pisząc Func
jak ten:
class ExtractMonth(Func):
template = "EXTRACT(MONTH FROM %(expressions)s)"
def __init__(self, *expressions, **extra):
extra['output_field'] = SmallIntegerField()
super().__init__(*expressions, **extra)
i używając go w ten sposób:
Subscription.objects.annotate(Month=ExtractMonth('Modified'))\
.values('Month').annotate(Count('Month'))
W ten sposób 'Modified'
to nazwa pola w Twoim modelu, a Django rozwiązuje nazwę kolumny za Ciebie.
Aktualizacja
Istnieje bardziej ogólne rozwiązanie proponowane w ten bilecie 1.9 .