首页 > 解决方案 > 我将如何扩展 wagtailmenus LinkPage 以添加通用图片

问题描述

我已经AbstractLinkPage在我的网站上使用 wagtailmenus 的模型有一段时间了。我觉得它很有用。来源:wagtailmenus AbstractLinkPage 模型

我的网站正在从子页面构建卡片,并将子页面中的横幅图像自动添加到这些卡片中。一些子页面是LinkPages. 如何扩展子类LinkPage(来自AbstractLinkPage)以添加可用作卡片图像的通用图像?

我添加了以下字段:

class LinkPage(AbstractLinkPage):
    card_image = models.ForeignKey(
        get_image_model_string(),
        null=True,
        blank=True,
        related_name='+',
        on_delete=models.SET_NULL,
    )

    content_panels = AbstractLinkPage.content_panels + [
        ImageChooserPanel("card_image"),
    ]

但是,图像card_image字段不会显示在管理界面中。

感谢您对前进的任何帮助。

标签: wagtail

解决方案


Wagtailmenus 使用它自己的选项卡式界面(在 wagtailmenus.panels 中):

linkpage_tab = ObjectList(
    linkpage_panels, heading=_("Settings"), classname="settings"
)

linkpage_edit_handler = TabbedInterface([linkpage_tab])

所以你要做的就是创建一个新的ObjectList:

from wagtailmenus.panels import linkpage_panels
from wagtail.admin.edit_handlers import ObjectList, TabbedInterface

my_linkpage_tab = ObjectList(
    linkpage_panels + [ImageChooserPanel("card_image")], 
    heading=_("Settings"), classname="settings"
)

..并将其添加到您的课程中:

class LinkPage(AbstractLinkPage):
    [..]

    edit_handler = TabbedInterface([my_linkpage_tab])

推荐阅读