Django: 下拉列表
我有一个模型叫做“Post”,它就像一个博客文章:
class Post(models.Model):
每篇文章都有一个叫做 pub_date 的属性:
pub_date = models.DateField()
在我的网站上展示文章时,我想在页面顶部放一个简单的下拉菜单,结构大概是这样的:
- 2014
- 一月
- 二月
- 2013
- 2012
依此类推。我不知道怎么用 Django 来像这样排序我的文章,而且我觉得死板地写死代码不是个好主意。你会怎么解决这个问题?
1 个回答
2
你可以使用类似这样的代码:
posts = Post.objects.all()
sortedposts = {}
for p in posts:
sortedposts.setdefault(p.pub_date.year, {})\
.setdefault(p.pub_date.strftime('%b'), [])\
.append(p)
这样的话,你就能得到下面的结构:
sortedposts = {
2014: {
'Jan': [<post4>, <post3>],
'Feb': [<post2>]
},
2013: {
'Jul': [<post1>]
}
}