微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

g-搜索页面所有者的全名

如何解决g-搜索页面所有者的全名

我正在建立一个博客样式文档站点。创建子页面时,我正在使用作者的用户输入字段。我发现Wagtail在页面模型中拥有所有者。为了不重复数据,我删除了author字段,以便可以使用认的wagtail字段。但是,我已经设置了用于身份验证的LDAP模块,因此所有者作为雇员ID(而不是用户名)存放。该员工ID确实映射为全名,我可以通过owner.get_full_name在模板上访问它。

问题是,执行搜索时,如何设置搜索以检查所有者的全名?如何将其纳入搜索索引?我对Wagtail还是有点陌生​​,所以这可能是创建带有外键映射回用户表的author字段的情况,还是应该修改搜索视图以包括遍历用户表的情况?

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搜索文档,它描述了为可调用项和附加属性编制索引的过程:

https://docs.wagtail.io/en/stable/topics/search/indexing.html#indexing-callables-and-other-attributes

所以我要做的是:

  1. 在页面类中创建一个get_owner_full_name()方法
  2. 将index.SearchField('get_owner_full_name')添加到search_fields

不过请注意,这仅在使用PostgreSQL后端或Elasticsearch后端时才有效。默认的数据库后端不支持额外字段的索引。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。