用途:django-filter 用于按 URL 查询参数动态过滤 Django queryset,并提供 Django REST Framework 集成。安装:pip install django-filter,配合 DRF 时 pip install django-filter djangorestframework,并在 INSTALLED_APPS 中加入 'django_filters'。
主要能力:以 Python 类声明过滤条件,支持自动从模型生成 FilterSet、自定义过滤后端与字段、范围过滤(min/max)、文本搜索(icontains)、多值(lookup_expr='in')、日期范围、排序等。FilterSet 可用 & 组合,也可继承共享基础过滤条件。
使用方式:定义 FilterSet 类并在 Meta 中指定 model 和 fields;在视图中用 ProductFilter(request.GET, queryset=...).qs 获取结果。DRF 中设置 filter_backends = [DjangoFilterBackend] 和 filterset_class。资料提示 Django 6.0+ 中 Meta.fields 需显式写 'all' 字符串或明确列表。
适用场景:面向用户的动态多条件过滤、DRF 接口过滤、多个视图共享过滤集、需要过滤值校验时。
限制与注意:M2M 过滤需手动加 distinct() 以避免重复行;过滤列建议加索引;__in 的用户输入列表应限制长度;get_queryset() 每次请求都会执行,不宜放昂贵逻辑;OrderingFilter 与 FilterSet 排序字段不应混用;未定义的查询参数会被静默忽略。资料未提供具体价格、平台或效果数据。