Опитахте ли да разгледате вашата схема? Мисля, че просто сте сбъркали името на колоната си.
Ако приемем, че използвате Djnago>=1.8, можете също да избегнете целия проблем, като напишете Func
като този:
class ExtractMonth(Func):
template = "EXTRACT(MONTH FROM %(expressions)s)"
def __init__(self, *expressions, **extra):
extra['output_field'] = SmallIntegerField()
super().__init__(*expressions, **extra)
и да го използвате по този начин:
Subscription.objects.annotate(Month=ExtractMonth('Modified'))\
.values('Month').annotate(Count('Month'))
По този начин 'Modified'
е името на полето във вашия модел и Django разрешава името на колоната вместо вас.
Актуализация
Има по-общо решение, предложено в този билет 1.9 .