首页 > 解决方案 > 搜索时清除 SimpleListFilter

问题描述

我在我的网站中使用“search_fields”和“list_filter”。当我做一个搜索 URL 变得像

/ur/corelog/?q=test

并且搜索功能运行良好,当我使用 list_filter 时,url 变得像

②<code>/url/corelog/?scoreRange=0+-+0.9

这是预期的。我担心的是,如果我进行搜索(url 变为①)然后我使用过滤器,则 url 变为上面的②,搜索文本会如我所愿消失。

/url/corelog/?scoreRange=0+-+0.9

如果我先使用过滤器(url 变成②)然后我使用搜索,url 变成如下(搜索文本和过滤器都包括)。

url/corelog/?q=test&scoreRange=0+-+0.9

我需要①(/ur/corelog/?q=test)代替。并且搜索也不起作用。

执行搜索时如何清除我的过滤器?

以下是我的管理类和 list_filter

Class CoreLogAdmin(admin.ModelAdmin):

    form = CoreLogAdminForm
    search_fields = ('question',)
    list_filter = (RangeFilter,)

    list_display = ('question', '_predicted_result', 'datetime_created')
    fields = ('question', 'predicted_result', 'datetime_created')



class RangeFilter(admin.SimpleListFilter):

    title = 'Score'
    parameter_name = 'scoreRange'
    template = 'admin/shuchi_logging/input_filter.html'

    def lookups(self, request, model_admin):
        return (
            ('Yes', ''),
        )

    def queryset(self, request, queryset):

        value = self.value()

        """
        making queryset
        """

        return queryset

标签: djangodjango-admin

解决方案


def queryset:class RangeFilter。如果你有任何参数search_fields,你可以return queryset直接不做任何查询集。


推荐阅读