【问题标题】:wagtail main search add modelAdmin models鹡鸰主搜索添加模型管理模型
【发布时间】:2020-04-21 05:45:21
【问题描述】:

关于 wagtail 的主要搜索的快速问题位于徽标下方左侧边栏的顶部。 默认情况下,搜索框搜索页面、图像、文档、用户。

两个问题: 有没有办法修改该搜索范围,使其还包括 modelAdmin 模型? 有没有办法从搜索查询列表中删除页面,使其只搜索图像、文档、用户?

我似乎在文档中找不到任何关于它的内容。我知道您可以在模型管理列表视图中搜索 modelAdmin 模型一次,我可以使用它。我只是在寻找一种方法来扩展该搜索以包含在主侧边栏搜索中。

您可以提供的任何方向将不胜感激。

【问题讨论】:

    标签: python django search wagtail


    【解决方案1】:

    管理搜索区域确实显示了多个项目,例如页面、图像、文档等。

    但是,此页面仅搜索page 模型,当您单击其他模型(例如图像)时,它将带您到图像搜索页面,它还会根据任何现有搜索附加查询参数q .

    所以为了澄清一下,这个页面只搜索页面并搜索其他项目,它会把你带到 Wagtail 管理员的其他地方。

    希望以下内容能回答您的具体场景问题。

    1。修改admin/pages搜索范围或结果

    • 这可以通过制作自己的视图来完成,但这并不简单
    • 你可以在这里看到search查看功能https://github.com/wagtail/wagtail/blob/master/wagtail/admin/views/pages.py#L958
    • 您可以通过修改 urls.py 将 admin/pages/search/ 页面重定向到您的自定义视图来重定向任何 URL。
    • 但是,您可能需要重写(复制/粘贴)大部分视图,因为它是一个函数,而不是类视图

    2。添加自定义搜索区域

    3。删除搜索区域

    • 隐藏“其他搜索”列表中的一项的最简单方法是更改​​ CSS
    • 下一个最佳方法是使用覆盖自定义模板 wagtail/admin/templates/wagtailadmin/shared/search_other.html,然后过滤结果
    • 我不知道在没有猴子修补的情况下删除钩子或注册钩子的方法,但钩子被收集并存储为admin_search_areas 你可以在这里看到代码 - https://github.com/wagtail/wagtail/blob/master/wagtail/admin/search.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
        )
    

    【讨论】:

    • 这个超级有用,我会试试的。感谢您的帮助!
    猜你喜欢
    • 2017-05-20
    • 1970-01-01
    • 2019-03-13
    • 2018-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-16
    相关资源
    最近更新 更多