Django-filter是一个可重用的Django应用程序,允许用户通过URL参数动态地过滤查询集。
项目描述
Django-filter是一个可重用的Django应用程序,允许用户通过URL参数声明性地添加动态QuerySet过滤。
完整的文档请查看文档。
要求
Python: 2.7, 3.6
Django: 1.11
DRF: 3.7, 3.8
Django filter EX是Django filter 1.1.0的一个分支,其中包含一个小的补丁,用于提高默认过滤器集在链式过滤器上的性能。它通过了所有测试,并适用于我的用例。
安装
使用pip安装
pip install django-filter
然后,将'django_filters'添加到您的INSTALLED_APPS。
INSTALLED_APPS = [
...
'django_filters',
]
使用方法
Django-filter可用于生成类似于Django admin的list_filter接口的界面。它具有与Django的ModelForms非常相似的API。例如,如果您有一个Product模型,您可以使用以下代码为其创建一个过滤器集:
import django_filters
class ProductFilter(django_filters.FilterSet):
class Meta:
model = Product
fields = ['name', 'price', 'manufacturer']
然后,在您的视图中,您可以进行以下操作:
def product_list(request):
filter = ProductFilter(request.GET, queryset=Product.objects.all())
return render(request, 'my_app/template.html', {'filter': filter})
与Django REST Framework一起使用
Django-filter为与Django REST Framework一起使用提供了一个自定义的FilterSet和过滤器后端。
要使用此功能,请调整您的导入以使用django_filters.rest_framework.FilterSet。
from django_filters import rest_framework as filters
class ProductFilter(filters.FilterSet):
class Meta:
model = Product
fields = ('category', 'in_stock')
有关更多详细信息,请参阅DRF集成文档。
支持
如果您对使用或开发有任何疑问,您可以加入邮件列表。