构建 Wagtail 管理菜单:如何 get/set 菜单项名称?

Constructing Wagtail admin menu: How to get/set menu items name?

我正在尝试通过钩子自定义 Wagtail 中管理菜单的呈现,如所述 here:

from wagtail.core import hooks

@hooks.register('construct_main_menu')
def hide_explorer_menu_item_from_frank(request, menu_items):
  if request.user.username == 'frank':
    menu_items[:] = [item for item in menu_items if item.name != 'explorer']

但我无法弄清楚,如何 get/set 我的模型(或任何地方)中 menu_items 对象的 name 属性。我现在的 hacky 解决方案是使用索引:

menu_items[:] = list(menu_items[i] for i in [0, 6, 7, 8, 9, 10])

但这并不理想。有人吗?

As documented under the register_admin_menu_item hook,可以在创建MenuItem对象时传递一个name关键字参数:

MenuItem('Videos', reverse('videos'), name='videos') 

如果您不传递名称,系统会根据标签自动创建一个名称。

要打印出现有菜单项的名称:

print([item.name for item in menu_items])