Quiero obtener una salida de {'month': 'jan', 'count': 1600} pero obtengo lo siguiente con el código actual {'month': 1, 'count': 1600}. ¿Cómo hago esto para obtener el nombre del mes y no el número entero?
class Month(Func): function = 'EXTRACT' template = '%(function)s(MONTH from %(expressions)s)' output_field = IntegerField() Note.objects.filter( email_status__in=status_list, email_template__isnull=False, creation_time__gt=one_year ).annotate( month=Month('creation_time') ).values('month').annotate( total_count=Count( 'email_id', distinct=True) ).values('total_count', 'month')Podría intentar usar DATE_FORMAT en lugar de EXTRACT . Lo siguiente no está probado.
class Month(Func): function = 'EXTRACT' template = "%(function)s(%(expressions)s, '%%b')" output_field = CharField()Alternativamente, no debería ser demasiado complicado convertir los números enteros 1-12 a 'jan'-'dec' en Python.