搜索时清除SimpleListFilter

时间:2018-10-31 02:45:01

标签: django django-admin

我在我的网站中使用“ search_fields”和“ list_filter”。 当我执行搜索时,URL会变成

/ur/corelog/?q=test

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

/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

1 个答案:

答案 0 :(得分:0)

def queryset:的{​​{1}}中。如果您有class RangeFilter的任何参数,则可以直接search_fields,而无需进行任何查询集。