2

カスタム ページ モデルの 1 つで検索できるようにしたいと考えています。検索page.idでは、リストにある定義済みのものをすべて除外しpage.url_path、特定の値が含まれている場所も除外する必要があります。

例えば:

from django.db.models import Q

# The view
def search(request, search_query):
    ...
    CustomPageModel.objects.live().exclude(
        Q(id__in=list_page_ids) | 
        Q(url_path__icontains='notsearchable')
    ).search(search_query))

これは、次を使用すると機能します。

WAGTAILSEARCH_BACKENDS = {
    'default': {
        'BACKEND': 'wagtail.contrib.postgres_search.backend',
    }
}

しかし、私が使用すると機能しません:

WAGTAILSEARCH_BACKENDS = {
    'default': {
        'BACKEND': 'wagtail.search.backends.elasticsearch6',
        ...
    }
}

バックエンドとして Elasticsearch から取得したエラー:

FilterError at /search/query/
Could not apply filter on search results: "url_path__icontains = notsearchable". Lookup "icontains"" not recognised.

Elasticsearch はサポートしていませんicontains

では、どうすれば同じモデルを除外して検索できますか?

ps。CustomModel はさまざまな url_paths で使用されるため、モデル自体に変更を加える必要はありません。

4

0 に答える 0