Python 为Django归档页面选择不同的年份和月份

Python 为Django归档页面选择不同的年份和月份,python,django,datetime,django-views,django-queryset,Python,Django,Datetime,Django Views,Django Queryset,我想为我的django站点制作一个归档索引页面。然而,基于日期的通用视图实际上没有任何帮助。我希望视图返回的字典包含至少存在一个对象类型实例的所有年份和月份。所以,如果我的博客在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 2009年1月、2月、3月 2008

我想为我的django站点制作一个归档索引页面。然而,基于日期的通用视图实际上没有任何帮助。我希望视图返回的字典包含至少存在一个对象类型实例的所有年份和月份。所以,如果我的博客在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 2009年1月、2月、3月 2008年-一月、二月、三月、五月、六月、七月、八月、九月、十月、十一月、十二月
2007年9月、10月、11月、12月您应该能够从内置视图中获得您描述的所有信息。你能更具体地说明你不能得到什么吗?这应该有你需要的一切:

django.views.generic.date_based.archive_month

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

这将为您提供一个独特的发布日期列表:

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

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

我找到了自己问题的答案

在文件中

有一个名为dates的函数,它将为您提供不同的日期。所以我能做到


Entry.objects.dates('pub_date','month')获取datetime对象列表,每年/每月一个

不,这给出了当月的实际对象。我不要这些东西。我只想要不同的月份和年份。有趣的是,你可以回答你自己的问题。不过,我也会将你的发现添加到你的原始帖子中。对于任何拥有
日期时间字段的人来说,它只是
.datetimes(…)
。如果是日期?这个答案对我来说非常有效,我使用了类似
.distinct('post\u date')
的方法,但没有效果