楼主,你好,请教一下,想实现按照文章发表日期,显示日期对应的所有文章


界面描述如下:

2016年8月1日
文章1_titile, 文章1_description

文章2_title, 文章2_description

文章3_titile,文章3_description

2016年8月2日
文章1_titile, 文章1_description

文章2_title, 文章2_description

文章3_titile,文章3_description

Model如下:

class Article(models.Model):
    title = models.CharField(max_length=50)
    description = models.CharField(max_length=300)
    created = models.DateTimeField(auto_now_add=True)

请问该如何实现呢,求指点。考虑了一下django自带的group by,感觉还是没想明白。;( 功能类似于"湾区日报" 的这个界面: https://wanqu.co/issues?s=top 感谢!感谢;)

  • 3 回复 | 直到 2016年12月23日 10:57
  • 我给个思路的代码示例,但可能有一点错误,你自己调通就好。此外,你才是楼主,我是版主^_^。

    我们按照湾区日报的方式实现按天分类,首先我们获取文章的 queryset 传到模板Article.objects.all().order_by('-created')。这里排序很重要,因为分组是建立在排序之上。

    现在要做的是对这个 queryset 按照它的 created 属性分组,按天分。由于 created 是一个 DateTime 对象,他的 date 属性表示一天,同一天其 date 相同。

    {% regroup queryset by created.date as article_archive %}
    

    之后就可以循环显示分组了:

     {% for group in article_archive %}
        {{ group.grouper }} -- 表示分组的日期,即几月几日
        group.list -- 这一组下的成员,即一天下的全部文章,循环显示就好了。
    

    如果有疑问或者报错,请再追问。

    • jason
    • 2 楼

    感谢楼主,不是,感谢版主!,解决了;)

    • jason
    • 3 楼

    @追梦人物 感谢楼主,不是,感谢版主!,解决了;)

添加一条新回复
登录以回复