Фильтр списка администратора Django Удалить все - PullRequest
0 голосов
/ 17 декабря 2018

Как вы можете видеть на скриншоте ниже, при использовании и настройке фильтров администратора django, например, так:

class DealExpiredListFilter(admin.SimpleListFilter):
  title = 'expired'

  parameter_name = 'expired'

  def lookups(self, request, model_admin):
      return (
          ('yes', 'yes'),
          ('no', 'no'),
      )

  def queryset(self, request, queryset):
      if self.value() == "yes":
          return queryset.filter(end_date__lt=timezone.now())
      elif self.value() == "no":
          return queryset.exclude(end_date__lt=timezone.now())

Django будет вставлять опцию «Все» в любом случае (что отлично подходит для% 99времена).Я хочу переименовать или удалить эту опцию «Все», как показано на скриншоте

scrrenshot

1 Ответ

0 голосов
/ 17 декабря 2018

Я в конечном итоге решил эту проблему, просматривая исходный код, который можно найти здесь по этой ссылке и переопределяя функцию choices.Я только изменил выбор «Все», чтобы показать «Да» в этом коде, который был добавлен в мой класс фильтра:

from django.utils.encoding import force_text

def choices(self, changelist):
    """Copied from source code to remove the "All" Option"""
    yield {
        'selected': self.value() is None,
        'query_string': changelist.get_query_string({}, [self.parameter_name]),
        'display': 'Yes',
    }
    for lookup, title in self.lookup_choices:
        yield {
            'selected': self.value() == force_text(lookup),
            'query_string': changelist.get_query_string({self.parameter_name: lookup}, []),
            'display': title,
        }
...