这是一个django-filter应用程序特定的客户。
有没有人尝试引入条件让过滤器根据条件进行查询?
让我举个例子:
假设我们有一个Product
模型。可以根据其name
和进行过滤price
。
默认django-filter
行为是,当我们使用更多过滤器并将它们链接在一起时,它们使用AND
语句过滤数据(它缩小了搜索范围)。
我想改变这种行为并添加一个 ChoiceFilter,比如有两个选项:AND
以及OR
. 从这一点来看,过滤器应该根据用户的选择工作。
例如。如果用户查询带有 的产品name__startswith="Juice"
OR
price__lte=10.00
,它应该列出名称以 开头的所有产品Juice
以及价格低于 的产品10.00
。
Django-filter
文档说过滤器可以接受一个参数:
action
An optional callable that tells the filter how to handle the queryset. It recieves a
QuerySet and the value to filter on and should return a Queryset that is filtered
appropriately.
这似乎是我正在寻找的,但文档缺乏任何进一步的解释。请问有什么建议吗?
@编辑:
这是views.py
:
def product_list(request):
f = ProductFilter(request.GET, queryset=Product.objects.all())
return render_to_response('my_app/template.html', {'filter': f})