我希望能够在我的自定义页面模型之一中进行搜索。搜索应排除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
.
那么如何排除和搜索同一个模型呢?
附言。CustomModel 用于不同的 url_paths,因此不应对模型本身进行任何更改。