You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Wagtail CMS 2.6.1:如何将更新页子项改为逆时间顺序排列?

如何修改Wagtail中Updates页面的子项排序规则?

管理界面能否直接修改?

很遗憾,不行。Wagtail的管理后台主要负责内容编辑、页面树结构管理这类可视化操作,前端页面的子项展示排序逻辑是由代码层面(页面模型的get_context方法或模板)控制的,没有内置的管理界面选项可以直接调整这个排序规则。

最快的Python实现方式

看你贴出来的ArticleIndexPage模型代码,其实已经写好了按日期倒序的逻辑(order_by('-date'))——如果当前前端还是按字母顺序展示,大概率是你线上运行的代码里排序规则不对,或者模板做了额外排序处理。

最快的修复步骤如下:

  1. 打开你的ArticleIndexPage模型文件,找到get_context方法里的children查询语句:
    • 如果当前是按字母排序,代码应该是这样的:
      children = ArticlePage.objects.live().child_of(self).not_type(ArticleIndexPage).order_by('title')
      
    • 把它改成按发布日期逆序(最新文章优先):
      children = ArticlePage.objects.live().child_of(self).not_type(ArticleIndexPage).order_by('-date')
      
    这里的-date依赖于你的ArticlePage模型有一个名为date的字段(用来存储文章的发布时间)。如果你的文章模型没有自定义date字段,也可以用Wagtail内置的页面发布时间字段:
    # 按首次发布时间逆序
    children = ArticlePage.objects.live().child_of(self).not_type(ArticleIndexPage).order_by('-first_published_at')
    # 或者按最后更新时间逆序
    children = ArticlePage.objects.live().child_of(self).not_type(ArticleIndexPage).order_by('-last_published_at')
    
  2. 保存代码后,重启你的Wagtail服务,前端的Updates页面子项就会自动切换为逆时间顺序展示了。
  3. 额外检查:确保你的模板在渲染children列表时没有添加额外的排序过滤,比如不要用{% for child in children|dictsort:"title" %}这种写法,直接用{% for child in children %}即可。

内容的提问来源于stack exchange,提问作者Access Denied

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.14 08:53:23