【问题标题】:Empty result list on django-filter page startupdjango-filter 页面启动时的空结果列表
【发布时间】:2015-05-13 09:41:01
【问题描述】:

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

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

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

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

来源

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

【问题讨论】:

  • 问题是,过滤器的默认视图是返回所有结果。您可能需要编辑您的视图。可以发一下吗?
  • 我已经发布了我非常简单的代码
  • 我要说的是,如果 url 中没有参数,你可以阻止结果的显示,但我意识到这也会阻止表单的显示。所以我不确定你想要的是否可能,除非你为表单创建一个单独的页面,并为表单/结果创建另一个页面。
  • 最好 - 我希望在单页上显示表单和结果。这是 django-filter 的默认行为。

标签: django django-filter


【解决方案1】:

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

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

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

【讨论】:

  • 当我尝试您的解决方案时,我的过滤器表单不呈现。
  • 请发布更多细节
  • 是的,当我将它放在我的 init 中时,记录不会显示,但包含我的过滤器的 filter.form 也不会显示。如果我手动将参数添加到表单呈现的获取查询字符串,但默认情况下它只是不在模板中呈现。我正在使用酥脆的表格,如果这有影响的话。
  • 可能是我的解决方案不适用于脆,我没有测试它们
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-03-26
  • 2012-10-18
  • 2021-06-29
  • 2021-11-13
  • 2021-04-13
  • 1970-01-01
相关资源
最近更新 更多