Django: 下拉列表

2 投票
1 回答
533 浏览
提问于 2025-04-18 12:09

我有一个模型叫做“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>]
    }
}

撰写回答