трясогузка основной поиск добавить модель Admin модели - PullRequest
0 голосов
/ 21 апреля 2020

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

Два вопроса: есть ли способ изменить эту область поиска, чтобы она также включала модели modelAdmin? Есть ли способ удалить страницы из списка поисковых запросов, чтобы он только осуществлял поиск изображений, документов, пользователей?

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

Любое направление, которое вы можете предоставить, будет высоко ценится.

1 Ответ

1 голос
/ 22 апреля 2020

В области поиска администратора отображаются несколько элементов, таких как страницы, изображения, документы и т. Д. c.

Однако эта страница ищет только page модели, когда вы нажимаете другие модели (например, изображения). ), он перенесет вас на страницу поиска изображений, а также добавит параметр запроса q на основе любого существующего поиска.

Так что просто для пояснения, эта страница только ищет страницы и ищет другие элементы , он перенесет вас в администрацию трясогузки.

Надеюсь, что нижеприведенный ответ на ваши конкретные c вопросы сценария.

1. Измените область поиска или результаты поиска admin/pages

  • Это можно сделать, создав собственный вид, но это не просто
  • Вы можете увидеть здесь функцию search. https://github.com/wagtail/wagtail/blob/master/wagtail/admin/views/pages.py#L958
  • Вы можете перенаправить любой URL-адрес, изменив свой urls.py, чтобы перенаправить страницу admin/pages/search/ в свое пользовательское представление.
  • Однако вам, вероятно, понадобится переписать (скопировать / вставить) большую часть представления, поскольку оно является функцией, а не представлением класса

2. Добавление пользовательских областей поиска

  • Это можно сделать с помощью хука register_admin_search_area, который добавит (в произвольном порядке) элемент рядом с текстом «другие поиски»
  • См. документация здесь https://docs.wagtail.io/en/latest/reference/hooks.html#register -admin-search-area
  • Это позволяет вам добавить то, что по сути является ссылкой на другую область поиска в другом месте администратора Wagtail (пример кода ниже)

3. Удаление области поиска

  • Простейший способ скрыть один из элементов в списке «другие поиски» будет с CSS изменением
  • Следующим лучшим способом будет настроить шаблон wagtail/admin/templates/wagtailadmin/shared/search_other.html с переопределением, а затем отфильтровать результаты
  • Я не знаю, как удалить хуки или зарегистрированные хуки без каких-либо мартышек, но хуки собираются и сохраняются как admin_search_areas you Вы можете увидеть код здесь - https://github.com/wagtail/wagtail/blob/master/wagtail/admin/search.py#L102

Пример кода для использования register_admin_search_area hook

Это в основном использует пример документации, но дает вам грубый Идея о том, как go к определенному c ModelAdmin индексному представлению, используя эту функцию. Примечание: это не ищет ВСЕ модели ModelAdmin, только одна указанная c одна.

Хотя вы всегда можете создать пользовательскую страницу поиска для поиска по всем моделям.

from wagtail.core import hooks
from wagtail.admin.search import SearchArea

# ...

@hooks.register('register_admin_search_area')
def register_model_admin_search_area():
    # PeopleModelAdmin is a ModelAdmin also in the same hooks file
    index_url = PeopleModelAdmin().url_helper.index_url
    return SearchArea(
        'People ModelAdmin',
        index_url,
        classnames='icon icon-user',
        order=10000
    )


@hooks.register('register_admin_search_area')
def register_snippets_search_area():
    url = reverse('wagtailsnippets:list', args=('base', 'people'))
    return SearchArea(
        'People Snippets',
        url,
        classnames='icon icon-user',
        order=10000
    )
...