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