Wagtail - 搜索页面所有者全名
Wagtail - Search Page Owner Full Name
我正在建立一个博客风格的文档站点。创建子页面时,我正在为作者使用用户输入字段。我发现 Wagtail 在页面模型中拥有 owner。为了不重复数据,我删除了我的作者字段,这样我就可以使用默认的 wagtail 字段。但是,我已经设置了一个用于身份验证的 LDAP 模块,因此所有者被保存为员工 ID 而不是用户名。这个员工 ID 确实映射到一个全名,我可以通过 owner.get_full_name.
在模板上访问它
所以问题是,如何设置默认搜索以在执行搜索时检查所有者的全名?如何将其纳入搜索索引?我对 Wagtail 还是有点陌生,所以这可能是创建一个带有外键映射回用户 table 的作者字段的情况,或者我应该修改搜索视图以包含 运行 通过用户 table?
def search(request):
search_query = request.GET.get('query', None)
page = request.GET.get('page', 1)
# Search
if search_query:
search_results = Page.objects.live().search(search_query)
query = Query.get(search_query)
# Record hit
query.add_hit()
else:
search_results = Page.objects.none()
# Pagination
paginator = Paginator(search_results, 10)
try:
search_results = paginator.page(page)
except PageNotAnInteger:
search_results = paginator.page(1)
except EmptyPage:
search_results = paginator.page(paginator.num_pages)
return TemplateResponse(request, 'search/search.html', {
'search_query': search_query,
'search_results': search_results,
})
如果您查看 Wagtail 搜索文档,它描述了索引可调用对象和额外属性的过程:
所以我会做的是:
- 在您的页面中创建 get_owner_full_name() 方法 class
- 将 index.SearchField('get_owner_full_name') 添加到 search_fields
请注意,这仅在您使用 PostgreSQL 后端或 Elasticsearch 后端时才有效。默认数据库后端不支持额外字段的索引。
我正在建立一个博客风格的文档站点。创建子页面时,我正在为作者使用用户输入字段。我发现 Wagtail 在页面模型中拥有 owner。为了不重复数据,我删除了我的作者字段,这样我就可以使用默认的 wagtail 字段。但是,我已经设置了一个用于身份验证的 LDAP 模块,因此所有者被保存为员工 ID 而不是用户名。这个员工 ID 确实映射到一个全名,我可以通过 owner.get_full_name.
在模板上访问它所以问题是,如何设置默认搜索以在执行搜索时检查所有者的全名?如何将其纳入搜索索引?我对 Wagtail 还是有点陌生,所以这可能是创建一个带有外键映射回用户 table 的作者字段的情况,或者我应该修改搜索视图以包含 运行 通过用户 table?
def search(request):
search_query = request.GET.get('query', None)
page = request.GET.get('page', 1)
# Search
if search_query:
search_results = Page.objects.live().search(search_query)
query = Query.get(search_query)
# Record hit
query.add_hit()
else:
search_results = Page.objects.none()
# Pagination
paginator = Paginator(search_results, 10)
try:
search_results = paginator.page(page)
except PageNotAnInteger:
search_results = paginator.page(1)
except EmptyPage:
search_results = paginator.page(paginator.num_pages)
return TemplateResponse(request, 'search/search.html', {
'search_query': search_query,
'search_results': search_results,
})
如果您查看 Wagtail 搜索文档,它描述了索引可调用对象和额外属性的过程:
所以我会做的是:
- 在您的页面中创建 get_owner_full_name() 方法 class
- 将 index.SearchField('get_owner_full_name') 添加到 search_fields
请注意,这仅在您使用 PostgreSQL 后端或 Elasticsearch 后端时才有效。默认数据库后端不支持额外字段的索引。