2013-06-11 13 views
0

是否有可能像它在管理列表過濾器進行添加「所有」鏈接到我的過濾器設置? 目前我有這個代碼工作正常,除了它沒有「全部」鏈接,重置篩選器的某些選擇。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

我得到這個錯誤 例外類型: 類型錯誤 例外值: __init __()得到了一個意外的關鍵字參數'empty_label' 異常位置: /Library/Python/2.7/site-packages/django/forms/fields.py in __init__,line 672' –

+0

請給我看你的代碼使用上述解決方案,使用dpaste.com粘貼您的代碼並共享鏈接。 –

+0

@YorikZiru我已經更新了答案,告訴你如何使用它。另外,如果'empty_label'在過濾中不起作用,請嘗試將其設置爲空字符串'''' –