title
是一个实际的 Django 模型属性,不要试图覆盖它:https ://docs.djangoproject.com/en/dev/topics/db/models/#field-name-hiding-is-not-permitted
来自 wagtailadmin/pages/list.html 的实际管理模板在循环中生成页面列表,并在整个过程中广泛使用并通过 include ( ){% for page in pages %}
调用。因此,基于检查代码,Wagtail 本身不支持此功能。检查其他包括。{{ page.title}}
templates/wagtailadmin/pages/listing/_page_title_explore.html
templates/wagtailadmin/pages/listing/*
但是,Django 支持用您自己的模板覆盖一个应用程序的模板。您可以将此模板复制到项目的模板文件夹中,保持相同的路径(例如,templates/wagtailadmin/pages/listing/_page_title_explore.html
假设您的项目设置有模板目录)。
您必须将调用替换为page.title
您自己的版本。过滤器或标签可能会使这更容易。将以下过滤器添加到您的模板标签(例如myapp/templatetetags/myapp_tags.py
):
register = template.Library()
@register.filter
def uniquify_title(page):
specific_page = page.specific
try:
return specific_page.date_from.strftime("%Y-%m-%d") + " - " + specific_page.title
except AttributeError:
return specific_page.title
{{ page.title}}
然后将模板中从第 7 行和第 9 行开始的用法替换为:
{{ page|uniquify_title }}
这样做的缺点是您必须在list.html
每次更新 Wagtail 时更新您自己的版本。您可以尝试在 Github 上提交问题并提出一个提供“admin_title”可调用或类似内容的分叉。