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

Wagtail中Orderable关联页面模板无法获取标题求助

解决Wagtail设置页“最受欢迎页面”模板标题不显示问题

核心原因

你循环的popular_pages返回的是Orderable关联模型的实例,不是直接的Page对象,所以直接调用.title是在访问Orderable模型的属性,而非目标页面的属性。

正确模板写法

假设你的Orderable模型中,关联页面的外键字段名为page(对应模型里的PageChooserPanel('page')),模板代码应改为:

{% for item in settings.home.MostPopularPosts.popular_pages.all %}
    <li><a href="{{ item.page.url }}">{{ item.page.title }}</a></li>
{% endfor %}

如果需要访问自定义页面模型的专属字段,使用item.page.specific来获取页面的具体实例:

{{ item.page.specific.your_custom_field }}

对应模型示例(供你核对字段名)

确保你的Orderable模型定义了正确的外键字段:

from django.db import models
from wagtail.contrib.settings.models import BaseSiteSetting, register_setting
from wagtail.models import Orderable, ParentalKey
from wagtail.admin.panels import InlinePanel, PageChooserPanel

class PopularPageLink(Orderable):
    # 关联到设置页模型
    setting = ParentalKey('home.MostPopularPosts', related_name='popular_pages')
    # 这里的page就是需要在模板中调用的字段名
    page = models.ForeignKey('wagtailcore.Page', on_delete=models.CASCADE, related_name='+')

    panels = [
        PageChooserPanel('page'),
    ]

@register_setting
class MostPopularPosts(BaseSiteSetting):
    panels = [
        InlinePanel('popular_pages', label="最受欢迎页面", max_num=5, min_num=1),
    ]

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.04 21:00:49