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
相关产品推荐
相关产品推荐

