django filter是一个可重用的django应用程序,允许用户动态过滤queryset。
django-filter-ex的Python项目详细描述
django过滤器是一个可重用的django应用程序,允许用户以声明的方式 从url参数添加动态筛选QuerySet。
关于read the docs的完整文档。
要求
- 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过滤器可用于生成类似于Django的接口 管理员的list_filter接口。它有一个非常类似于Django的API ModelForms。例如,如果你有一个产品模型,你可以有一个 为其设置筛选器,代码为:
importdjango_filtersclassProductFilter(django_filters.FilterSet):classMeta:model=Productfields=['name','price','manufacturer']
在你看来,你可以:
defproduct_list(request):filter=ProductFilter(request.GET,queryset=Product.objects.all())returnrender(request,'my_app/template.html',{'filter':filter})
与django rest framework一起使用
Django filter提供一个自定义的FilterSet和过滤器后端,用于 django rest框架。
若要使用此项,请调整导入以使用 django_filters.rest_framework.FilterSet
fromdjango_filtersimportrest_frameworkasfiltersclassProductFilter(filters.FilterSet):classMeta:model=Productfields=('category','in_stock')
有关详细信息,请参见DRF integration docs。
支架
如果您对使用或开发有疑问,可以加入 mailing list。