我正在尝试通过钩子自定义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])
但这还不理想。有人吗?
答案 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])