Выберите разные годы и месяцы на странице архива Django - PullRequest
11 голосов
/ 24 марта 2009

Я хочу создать страницу 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

Ответы [ 3 ]

36 голосов
/ 24 марта 2009

Это даст вам список уникальных дат размещения:

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

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

11 голосов
/ 24 марта 2009

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

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

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

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

1 голос
/ 24 марта 2009

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

django.views.generic.date_based.archive_month

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

...