2017-04-25 116 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'應該不會太棘手。