Как получить название месяца вместо номера месяца из базы данных

Я беру некоторые данные из базы данных, чтобы сделать некоторую аналитику на моем сайте. Я вывожу данные графически с помощью chart 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. Но я импортирую эти данные в другой файл javascript с помощью ajax.

Пожалуйста, посоветуйте, что мне делать.

Предполагая, что ваш код работает, для 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')

Я использую функции форматирования , поэтому этот код зависит от RDBMS.

Вы также будете иметь date_of_record__month в QuerySet, вам не нужно передавать его в ответ.

Вернуться на верх