Построение админки Wagtail: Как получить / установить название пункта меню? - PullRequest
0 голосов
/ 24 апреля 2019

Я пытаюсь настроить отображение меню администратора в трясогузке с помощью ловушки, как описано здесь :

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 в моих моделях (или где-либо еще). Мое хакерское решение на данный момент - перейти на индексы:

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

Но это не так идеально. Кто-нибудь?

1 Ответ

0 голосов
/ 24 апреля 2019

Как описано в разделе register_admin_menu_item hook , вы можете передать ключевое слово name объекту MenuItem при его создании:

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

Если вы не передаете имя, оно автоматически создается из метки.

Чтобы распечатать названия существующих пунктов меню:

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