0

是否可以像在管理列表过滤器中那样将“全部”链接添加到我的过滤器集?目前我有这个代码可以正常工作,除了它没有“全部”链接,以重置某些选择的过滤器。

在我的 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

在我看来.py

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

1 回答 1

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
于 2013-06-11T14:06:04.547 回答