关于logo下方左侧侧边栏顶部的wagtail主搜索的快速问题。默认情况下该搜索框可以搜索页面、图片、文档、用户。
有两个问题。有没有办法修改搜索范围,让它也包括modelAdmin模型? 有没有办法从搜索查询列表中删除页面,让它只搜索图片、文档、用户?
我似乎在文档中找不到任何关于它的内容。我知道你可以在模型管理列表视图中搜索一次modelAdmin模型,我有这个功能。我只是在寻找一种方法来扩展这种搜索,使其也包含在主侧栏搜索中。
如果您能提供任何方向,我将非常感激。
管理员搜索区确实可以显示多个项目,如页面、图片、文档等。
但是,这个页面只搜索 page
模型,当你点击其他模型(如图片)时,它会带你到图片搜索页面,还会附加查询参数 q
的基础上进行搜索。
所以要说明的是,这个页面只搜索页面,如果要搜索其他项目,会把你带到鹡鸰管理的其他地方。
希望下面的内容能回答你的具体方案问题。
admin/pages
搜索范围search
查看功能 https:/github.comwagtailwagtailblobmasterwagtailadminviewspages.py#L958。admin/pages/search/
页面到您的自定义视图。register_admin_search_area
钩子,它将在 "其他搜索 "文本旁边添加一个项目(以自定义顺序)。wagtail/admin/templates/wagtailadmin/shared/search_other.html
覆盖,然后过滤结果admin_search_areas
你可以在这里看到代码 - https:/github.comwagtailwagtailblobmasterwagtailadminsearch.py#L102。register_admin_search_area
钩子这基本上使用了文档的例子,但给你一个粗略的想法,如何去一个特定的 ModelAdmin
使用此功能的索引视图。注意:这并不能搜索所有的ModelAdmin模型,只能搜索一个特定的模型。
不过您可以随时制作一个自定义搜索页面,以便一次搜索所有模型。
from wagtail.core import hooks
from wagtail.admin.search import SearchArea
# ...
@hooks.register('register_admin_search_area')
def register_model_admin_search_area():
# PeopleModelAdmin is a ModelAdmin also in the same hooks file
index_url = PeopleModelAdmin().url_helper.index_url
return SearchArea(
'People ModelAdmin',
index_url,
classnames='icon icon-user',
order=10000
)
@hooks.register('register_admin_search_area')
def register_snippets_search_area():
url = reverse('wagtailsnippets:list', args=('base', 'people'))
return SearchArea(
'People Snippets',
url,
classnames='icon icon-user',
order=10000
)