django-filter页面启动时的空结果列表

时间:2015-05-13 09:41:01

标签: django django-filter

我正在使用https://github.com/alex/django-filter

当用户第一次打开带过滤器的页面时,他们会看到空的表单和完整的结果列表。

在用户第一次按“搜索”之前,我不需要显示结果。

换句话说 - 如果参数 list (在url中)为空,则django-filter不应显示任何结果,如果参数(在url中),则显示所有结果是空的。

screenshot

来源

filters.py

import django_filters

from product.models import Product

class ProductFilter(django_filters.FilterSet):

    class Meta:
        model = Product
        fields = [ 'shortname', 'fullname', 'description', 'product_type' ]

views.py

from product.filters import ProductFilter

def product_search_in_ancestors(request, product_id):
    context = RequestContext(request)    
    p = get_object_or_404( Product, pk=product_id )

    q = Product.objects.filter( id__in = p.GetChilds() )

    filter = ProductFilter(request.GET , queryset=q )

    return render_to_response( 'product/product_search_in_ancestors.html',
        {'product':p,
        'filter': filter
         },
         context)

Link to same issue on github

1 个答案:

答案 0 :(得分:3)

经过一些研究,我发现了这个简单的解决方案

class ProductFilter(django_filters.FilterSet):
    class Meta:
        model = Product
        fields = [ 'shortname', 'fullname', 'description', 'product_type',   ]

    def __init__(self, *args, **kwargs):
        super(ProductFilter, self).__init__(*args, **kwargs)
        # at sturtup user doen't push Submit button, and QueryDict (in data) is empty
        if self.data == {}:
            self.queryset = self.queryset.none()

我认为,这个解决方案很稳定。你觉得怎么样?