为Django Archive页面选择不同的年份和月份

时间:2009-03-24 19:37:30

标签: python django datetime django-views django-queryset

我想为django网站制作archive_index页面。但是,基于日期的通用视图确实没有任何帮助。我希望视图返回的字典具有至少存在一个对象类型实例的所有年份和月份。因此,如果我的博客于2007年9月开始,但2008年4月没有帖子,我可以得到类似的内容

2009 - Jan, Feb, Mar
2008 - Jan, Feb, Mar, May, Jun, Jul, Aug, Sep, Oct, Nov, Dec
2007 - Sep, Oct, Nov, Dec

3 个答案:

答案 0 :(得分:36)

这将为您提供唯一发布日期列表:

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

当然,您可能不需要草稿过滤器,并将“post_date”更改为您的字段名称等。

答案 1 :(得分:11)

我找到了自己问题的答案。

It's on this page在文档中。

有一个名为日期的函数可以为您提供不同的日期。所以我可以做到

Entry.objects.dates('pub_date','month')获取日期时间对象列表,每年/每月一个。

答案 2 :(得分:1)

您应该能够从内置视图中获取您描述的所有信息。你能更具体地了解你无法获得的东西吗?这应该包含您需要的一切:

django.views.generic.date_based.archive_month

Reference page(在该页面上搜索上述字符串)