Wagtail:为 wagtailmenus 更改 list_display
Wagtail: Change list_display for wagtailmenus
我将 wagtailmenus 库与一些自定义模型一起使用,如 here 所述。没什么大不了的,只是增加了一个语言字段:
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
属性 以便我可以在列表中显示语言?
我不太精通 wagtailmenus,但它认为 WAGTAILMENUS_FLAT_MENUS_MODELADMIN_CLASS 是您正在寻找的设置。
要更改 list_display
中的字段,您必须继承 wagtailmenus; FlatMenuAdmin
并覆盖其 get_list_display
函数:
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 中添加如下内容:
WAGTAILMENUS_FLAT_MENUS_MODELADMIN_CLASS = "project.app.admin.TranslatableFlatMenuAdmin"
我将 wagtailmenus 库与一些自定义模型一起使用,如 here 所述。没什么大不了的,只是增加了一个语言字段:
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
属性 以便我可以在列表中显示语言?
我不太精通 wagtailmenus,但它认为 WAGTAILMENUS_FLAT_MENUS_MODELADMIN_CLASS 是您正在寻找的设置。
要更改 list_display
中的字段,您必须继承 wagtailmenus; FlatMenuAdmin
并覆盖其 get_list_display
函数:
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 中添加如下内容:
WAGTAILMENUS_FLAT_MENUS_MODELADMIN_CLASS = "project.app.admin.TranslatableFlatMenuAdmin"