如何从数据库中获取月份名称而不是月份编号

How to get the name of the month instead of the month number from db

我正在从数据库中选取一些数据以在我的网站上进行一些分析。我在图表 js 的帮助下以图形方式呈现数据。

这就是我在浏览量中的做法,

views.py

    monthly_visitor = VisitorCount.objects.all().filter(date_of_record__year = currentYear.year).values(
    'date_of_record__month'
    ).annotate(
        total_in_month=Count('ip') 
        ).order_by('date_of_record__month')
    

在这里,我正在提取当年每个月的所有访客数据。现在,如果我打印 monthly_visitor,我会得到以下结果

<QuerySet [{'date_of_record__month': 9, 'total_in_month': 1}, {'date_of_record__month': 10, 'total_in_month': 2}, {'date_of_record__month': 11, 'total_in_month': 3}, 
{'date_of_record__month': 12, 'total_in_month': 5}]> 

这是正确的,但我想要的是

<QuerySet [{'date_of_record__month': sept, 'total_in_month': 1}, {'date_of_record__month': oct, 'total_in_month': 2}, {'date_of_record__month': nov, 'total_in_month': 3}, 
{'date_of_record__month': dec, 'total_in_month': 5}]> 

这样我就可以在图表中显示月份的名称而不是数字。我在 html 中遇到了一些使用标签的方法。但是我在 ajax.

的帮助下将这些数据导入到另一个 javascript 文件中

请建议我该怎么做。

假设您的代码有效,对于 PostgreSQL,您可以这样做:

from django.db.models import F, Func, Value, CharField

monthly_visitor = VisitorCount.objects.all().filter(
    date_of_record__year=currentYear.year
).values(
    'date_of_record__month'
).annotate(
    total_in_month=Count('ip'),
    formatted_date=Func(
        F('created_at'),
        Value('Month'),
        function='to_char',
        output_field=CharField()
    )
).order_by('date_of_record__month')

我正在使用 formatting functions,因此此代码依赖于 RDBMS。

您还将在 QuerySet 中有一个 date_of_record__month,您不必将其传递给响应。