在Django中实现每年一次的月度存档

时间:2012-09-28 05:45:56

标签: django django-templates django-views

我之前在我的网站的不同页面上建立了档案。但是,这次Django不想与我合作。

class IndexView(ArchiveIndexView):
    template_name = 'cms/blog_base.html'
    date_field = 'pub_date'
    latest = '20'
    model = Entry

In template {% for year in date_list %} {{ year|date:"Y" }} gives me a date relating to none of my entries. {% for entry in object_list % } {{ entry.pub_date|date:"Y" }} obviously outputs the correct date for the entry but as the entries grow I can only imagine it will continue to duplicate the years and months.

那么我做错了什么?我需要在ArchiveIndexView和模板标签中做什么才能将日期与我的条目集相关联?在过去,它们位于不同的页面上,因此通过url conf中的正则表达式进行过滤。我看到的一个解决方案是使用一些原始SQL创建一个自定义管理器,我正在看什么?如果是这样,我将一起重新考虑这一切。感谢社区提前。

更新:示例:我在主页上想要的东西与此页面上的内容类似https://unweb.me/blog/monthly-archives-on-Django我现在也在考虑尝试他们的解决方案,因为它看起来像是一个不错的UI / UX。但是,我是一个简单的人,如果有的话,我很乐意采取简单的路线。

1 个答案:

答案 0 :(得分:3)

您在寻找regroup - 功能吗?

示例:

{% regroup object_list by date_field|date:"Y" as year_list %}
{% for year in year_list %}
    {% regroup year.list by date_field|date:"F" as month_list %}
    {% for month in month_list %}
        {{ month.grouper }} / {{ year.grouper }} <br />
        {{ month.list }}
    {% endfor %}
{% endfor %}