Django django_suit: как создать двухуровневое меню? - PullRequest
0 голосов
/ 27 мая 2019

Django 2.2, django-suit == 0.2.26 Это скорее вопрос django_suit, чем django.

У меня есть плоское меню, определенное в моем settings.py, каждый элемент является ссылкой в ​​представлении администратора:

SUIT_CONFIG = {
    'ADMIN_NAME': 'MyAdminName',
    'MENU': (
        'sites',
        '-',
        {
         'label': 'MenuItem1',
         'url': SCRIPT_NAME + '/some_view1',
        },
        {
         'label': 'MenuItem2',
         'url': SCRIPT_NAME + '/some_view2',
        },
        {
         'label': 'MenuItem3',
         'url': SCRIPT_NAME + '/some_view3',
        }
    }
}

Я бы хотел, чтобы оно работало как двухуровневое меню, которое открывается при наведении курсора мыши.

Это легко сделать для моделей приложения, например, так:

SUIT_CONFIG = {
    'ADMIN_NAME': 'MyAdminName',
    'MENU': (
        'sites',
        '-',
        {'app': 'MyApp',
         'label': 'MenuLabelTopLevel',
         'models': ('MyModel1', 'MyModel2', 'MyModel3')
        }
    }
}

Когда я наведу курсор мыши на MenuLabelTopLevel, я получаю выпадающее меню с 'MyModel1', 'MyModel2', 'MyModel3'.

Я ищу синтаксис, который позволил бы мне иметь такую ​​же функциональность для любого произвольного списка представлений в моем приложении, что-то вроде этого:

SUIT_CONFIG = {
    'ADMIN_NAME': 'MyAdminName',
    'MENU': (
        'sites',
        '-',
        {'app': 'MyApp',
         'label': 'MenuLabelTopLevel',
         'link_list': (SCRIPT_NAME + '/some_view1',SCRIPT_NAME + '/some_view2', SCRIPT_NAME + '/some_view3')
        }
    }
}

Существует ли эта функциональность в django_suit?В документах нет примера для этого.Если нет, может быть, какой-нибудь подобный пакет django (который позволил бы мне сделать это в моем существующем меню администратора, а не создавать какое-то новое меню в верхней части страницы)?

Спасибо

1 Ответ

0 голосов
/ 27 мая 2019

Я нашел способ сделать это.Никаких новых ключевых слов не требуется, вы просто вставляете их в "models" в виде списка словарей значений ключей "label and url".

SUIT_CONFIG = {
    'ADMIN_NAME': 'MyAdminName',
    'MENU': (
        {'label': 'MenuLabelTopLevel', 
            'models': [
                {
                    'label': 'SubMenuItem1',
                    'url': SCRIPT_NAME + '/some_view1',
                },
                {
                    'label': 'SubMenuItem1',
                    'url': SCRIPT_NAME + '/some_view1',
                 }
            ]
        }
    )

Только одно незначительное неудобство: разделитель ('-') игнорируется всписок предметов второго уровня.

...