我有一个模型“帖子”,它就像一篇博客文章:
class Post(models.Model):
每个帖子都有一个 pub_date 属性:
pub_date = models.DateField()
在我的网站上显示帖子时,我希望在页面顶部有一个简单的下拉菜单,其结构如下:
-
2014年
- 一月
- 二月
- 2013
- 2012
等等。我不知道如何使用 Django 对我的帖子进行排序,并且我认为对其进行硬编码是不好的做法。你会如何解决这个问题?
最佳答案
你可以使用类似的东西:
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>]
}
}
关于python - Django:下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24579806/