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

标签 django django-filter

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

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

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

换句话说,如果参数列表(在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

最佳答案

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

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()

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

关于django - django-filter 页面启动时结果列表为空,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30211058/

相关文章:

django - Celery + Django 信号

django - 如何在 Django 中返回第一个序列化对象而不是全部?

python - Django 过滤子对象的值

python - 我可以使用现有的 oscar oscar-api 对象模型来实现仅包含单项商品的购物篮吗?

不同 docker 容器之间的 Django channel

django - admin.RelatedOnlyFieldListFilter 不适用于多级关系

Django-filter 按相关字段过滤

python - 在大型表上使用 Django-Filter 以及 DataTables2

python - 使用Python/Boto/Django直接上传到S3构建Policy

python - 如何为从下拉列表中选择的多个值编写 django 过滤器查询?