2013-06-11 3 views
0

Можно ли добавить ссылку «Все» к моим наборам фильтров, как это делается в списке фильтров admin? В настоящее время у меня есть этот код, который отлично работает, за исключением того, что у него нет ссылки «Все», чтобы сбросить фильтр для определенных вариантов.django_filters с помощью LinkWidget необходимо очистить фильтр

В моем filters.py

class VersionFilter(FilterSet): 
    version = AllValuesFilter(widget=widgets.LinkWidget) 
    codename = AllValuesFilter(widget=widgets.LinkWidget) 

    class Meta: 
     model = Version 
     fields = ['version', 'codename', 'libraries',] 

    def __init__(self, *args, **kwargs): 
     super(VersionFilter, self).__init__(*args, **kwargs) 
     libraries = Library.objects.values_list('name', flat=True).distinct() 
     library = ChoiceFilter(
      name = "libraries__name", 
      choices = set([(s, s) for s in libraries]), 
      widget = widgets.LinkWidget, 
     ) 
     self.filters['libraries'] = library 

В моем views.py

class VersionsListViewFilter(FilterView): 
    context_object_name = 'versions_list' 
    filterset_class = VersionFilter 

ответ

0

Просто вставьте пустой выбор в списке выбора:

def __init__(self, *args, **kwargs): 
    super(VersionFilter, self).__init__(*args, **kwargs) 
    libraries = Library.objects.values_list('name', flat=True).distinct() 
    CHOICES = [(s, s) for s in libraries] 
    CHOICES.insert(0, ('', 'All Libraries')) 
    library = ChoiceFilter(
     name = "libraries__name", 
     choices = CHOICES, 
     widget = widgets.LinkWidget, 
    ) 
    self.filters['libraries'] = library 
+0

Я получаю эту ошибку 'Тип исключения: ТипError Исключительное значение: __init __() получил неожиданный аргумент ключевого слова 'empty_label' Исключение Место: /Library/Python/2.7/site-packages/django/forms/fields.py в __init__, строка 672' –

+0

Пожалуйста, покажите мне свой код, как у вас есть использовали вышеупомянутое решение, используйте dpaste.com, чтобы вставить свой код и поделиться ссылкой. –

+0

@YorikZiru Я обновил ответ, чтобы показать вам, как вам нужно его использовать. Кроме того, если 'empty_label' не работает при фильтрации, попробуйте установить его в пустую строку' ''' –

Смежные вопросы