Упорядочивание администратора. Объекты ModelAdmin

34
задан double-beep 31 January 2019 в 16:51
поделиться

4 ответа

Это на самом деле покрыто в самой нижней части , Часть 2 Учебного руководства .

Django Здесь является соответствующим разделом:

Настраивают администраторскую индексную страницу

На подобной ноте, Вы могли бы хотеть настроить стиль администраторской индексной страницы Django.

По умолчанию, это отображает все приложения в INSTALLED_APPS, которые были зарегистрированы в приложении администрирования в алфавитном порядке. Можно хотеть внести существенные изменения в расположение. В конце концов, индекс является, вероятно, самой важной страницей администратора, и это должно быть просто в использовании.

шаблоном для настройки является admin/index.html. (Сделайте то же как с admin/base_site.html в предыдущем разделе - копирует его от каталога по умолчанию до Вашего пользовательского шаблонного каталога.) Редактируют файл, и Вы будете видеть, что он использует переменную шаблона, названную app_list. Та переменная содержит каждое установленное приложение Django. Вместо того, чтобы использовать это, Вы можете ссылки твердого кода на определенные для объекта администраторские страницы любым способом, которым Вы думаете, является лучшим.

10
ответ дан 27 November 2019 в 16:02
поделиться

Это - просто дикий удар в темноте, но является там любым шансом, что порядок, в котором Вы называете admin.site.register (< Образцовый класс>, < класс ModelAdmin>), может определить порядок дисплея? На самом деле я сомневаюсь, что это работало бы, потому что я полагаю, что Django поддерживает реестр Модели-> объекты ModelAdmin, реализованные как стандартный словарь Python, который не поддерживает итеративное упорядочивание.

, Если это не ведет себя путь, Вы хотите, можно всегда играть вокруг с источником в django/contrib/admin. При необходимости в итеративном поддержанном порядке Вы могли бы заменить объект _registry в классе AdminSite (в admin/sites.py) с UserDict или DictMixin, который поддерживает порядок вставки для ключей. (Но послушайте этот совет с мелкой частицей соли, так как я никогда не делал эти виды изменений сам, и я только заставляю образованное предположить, как Django выполняет итерации по набору объектов ModelAdmin. Я действительно думаю, что django/contrib/admin/sites.py является местом для поиска этого кода, тем не менее, и класса AdminSite и регистра () и индекс (), методы в особенности - то, что Вы хотите.)

, Очевидно, самой хорошей вещью здесь была бы простая опция для Вас указать в Вашем собственном/admin.py модуле. Я уверен, что это - вид ответа, который Вы надеялись получить. Я не уверен, существуют ли те опции, все же.

0
ответ дан 27 November 2019 в 16:02
поделиться

Я добавил его к trac Django:

http://code.djangoproject.com/ticket/9928

2
ответ дан 27 November 2019 в 16:02
поделиться

Мое решение состояло в том, чтобы создать подклассы django.contrib.admin.sites.AdminSite и django.contrib.admin.options.ModelAdmin.

Я сделал это, чтобы показать более наглядный название для каждого приложения и порядок внешнего вида моделей в каждом приложении. Итак, у меня есть dict в моем settings.py, который сопоставляет app_labels с описательными именами и порядком, в котором они должны появляться, модели упорядочены по порядковому полю, которое я указываю в каждом ModelAdmin, когда я регистрирую их на сайте администратора.

Хотя создание собственных подклассов AdminSite и ModelAdmin поощряется в документации, мое решение в конечном итоге выглядит уродливым хаком.

0
ответ дан 27 November 2019 в 16:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: