Выберите отдельные годы и месяцы для страницы архива Django

StackOverflow https://stackoverflow.com/questions/678927

Вопрос

Я хочу создать страницу archive_index для своего сайта Django.Однако общие представления на основе дат на самом деле бесполезны.Я хочу, чтобы словарь, возвращаемый представлением, содержал все годы и месяцы, для которых существует хотя бы один экземпляр типа объекта.Итак, если бы мой блог стартовал в сентябре 2007 года, но в апреле 2008 года не было сообщений, я мог бы получить что-то вроде этого

2009 - Jan, Feb, Mar
2008 - Jan, Feb, Mar, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec
2007 - Sep, Oct, Nov, Dec
Это было полезно?

Решение

Это даст вам список уникальных дат публикации:

Posts.objects.filter(draft=False).dates('post_date','month',order='DESC')

Конечно, вам может не понадобиться фильтр черновиков и измените «post_date» на имя вашего поля и т. д.

Другие советы

Я нашел ответ на свой вопрос.

Это на этой странице в документации.

Есть функция date, которая выдает вам отдельные даты.Так что я могу сделать

Entry.objects.dates('pub_date','month') для получения списка объектов datetime, по одному на каждый год/месяц.

Вы сможете получить всю описанную вами информацию из встроенных представлений.Можете ли вы уточнить, чего вы не можете получить?Здесь должно быть все, что вам нужно:

django.views.generic.date_based.archive_month

Справочная страница (найдите указанную выше строку на этой странице)

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top