Очистить SimpleListFilter при поиске - PullRequest
0 голосов
/ 31 октября 2018

Я использую '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) вместо этого. и поиск тоже не работает.

Как я могу очистить свой фильтр при выполнении поиска?

мой класс администратора и список_фильтров

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 голосов
/ 12 ноября 2018

В def queryset: из class RangeFilter. Если у вас есть какой-либо параметр search_fields, вы можете return queryset напрямую, без создания набора запросов.

...