构造Wagtail管理菜单:如何获取/设置菜单项名称?

时间:2019-04-24 11:23:33

标签: python wagtail

我正在尝试通过钩子自定义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']

但是我不知道如何在模型中(或任何地方)获取/设置name对象的menu_items属性。我目前的hacky解决方案是使用索引:

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

但这还不理想。有人吗?

1 个答案:

答案 0 :(得分:0)

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

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

如果您不传递名称,则会从标签中自动创建一个名称。

要打印出现有菜单项的名称,请执行以下操作:

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