2017-04-25 98 views
0

我想得到{'month':'jan','count':1600}的输出,但是我得到以下代码{'month':1,'count': 1600}。我如何做到这一点,所以我得到的是月份的名称而不是整数。Django group by month名字

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') 
+0

你正在使用什么数据库? – Alasdair

+0

我正在使用MySQL。 –

回答

0

你可以尝试使用的DATE_FORMAT代替EXTRACT。以下是未经测试的。

class Month(Func): 
    function = 'EXTRACT' 
    template = "%(function)s(%(expressions)s, '%%b')" 
    output_field = CharField() 

或者,在Python中将整数1-12转换为'jan' - 'dec'应该不会太棘手。