Сортировка страниц в диалоговом окне Wagtail PageChooserPanel - PullRequest
1 голос
/ 22 апреля 2020

Можно ли явно упорядочить список страниц на основе какого-либо атрибута (например, page.specific.popularity) в Wagtail PageChooserPanel? http://docs.wagtail.io/en/v2.0/reference/pages/panels.html не упоминает об этом как о возможности, и я не могу найти в документах ничего другого, намекающего на то, как это можно сделать.

1 Ответ

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

Да, есть хук, называемый construct_page_chooser_queryset, который позволяет изменять результаты pages, отображаемые в модале выбора страниц.

Пример кода

Это будет в вашем файле wagtal_hooks.py , пример на основе документов, связанных выше.

from wagtail.core import hooks

@hooks.register('construct_page_chooser_queryset')
def order_pages_in_chooser(pages, request):
    if "choose-page" in request.path:
        # showing page in a page chooser modal
        return pages.order_by('?')  # order randomly

    # search results shown in admin/pages/search - return in default order
    return pages
...