首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Wagtail:更改Wagtail菜单的list_display

Wagtail:更改Wagtail菜单的list_display
EN

Stack Overflow用户
提问于 2020-07-08 02:39:44
回答 1查看 112关注 0票数 0

我使用的是带有here描述的一些自定义模型的wagtailmenus库。没什么大问题,它只是添加了一个语言字段:

代码语言:javascript
复制
class TranslatableFlatMenu(AbstractFlatMenu):
    language = models.CharField(choices=TRANSLATION_CHOICES, help_text='For what language the menu should be used', max_length=13)

    content_panels = (
        MultiFieldPanel(
            heading=_("Menu Details"),
            children=(
                FieldPanel("title"),
                FieldPanel("site"),
                FieldPanel("handle"),
                FieldPanel("heading"),
                FieldPanel("language"),
            )
        ),
        FlatMenuItemsInlinePanel(),
    )


class TranslatableFlatMenuItem(AbstractFlatMenuItem):
    menu = ParentalKey(
        TranslatableFlatMenu,
        on_delete=models.CASCADE,
        related_name=settings.FLAT_MENU_ITEMS_RELATED_NAME,
    )

这很好用,但是我想在这里显示该字段:

现在对于常规模型,我可以使用ModelAdmin并传递list_display,但wagtailmenus似乎已经注册了菜单本身。是否仍然可以以某种方式更改list_display属性,以便在列表中显示语言?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-07-09 16:15:07

我不是很精通wagtailmenus,但它认为WAGTAILMENUS_FLAT_MENUS_MODELADMIN_CLASS是您正在寻找的设置。

要更改list_display中的字段,您必须继承FlatMenuAdmin的子类并覆盖它的get_list_display函数:

代码语言:javascript
复制
class TranslatableFlatMenuAdmin(FlatMenuAdmin):
    def get_list_display(self, request):
        if self.is_multisite_listing(request):
            return ('title', 'language', 'handle_formatted', 'site', 'items')
        return ('title', 'language', 'handle_formatted', 'items')

然后在你的settings.py中添加如下内容:

代码语言:javascript
复制
WAGTAILMENUS_FLAT_MENUS_MODELADMIN_CLASS = "project.app.admin.TranslatableFlatMenuAdmin"
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62781836

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档