- 1、添加django-fitlter扩展:
pip install django-filter
- 2、
settings.py
中添加应用:
INSTALLED_APPS = [
'django_filters',
]
- 3、
settings
文件中增加配置:
REST_FRAMEWORK = {
# drf过滤器
'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',)
}
- 4、自定义过滤器(本例子是在
serializers.py
中)
import django_filters
from django_filters.rest_framework import FilterSet
from interfaces.models import Interfaces
class NameLikeFilter(FilterSet):
"""根据name字段的过滤器"""
name = django_filters.CharFilter(field_name='name', lookup_expr="icontains") # icontains 包含,忽略大小写
class Meta:
model = Interfaces # 关联的模型
fields = ['name'] # 过滤的字段
- 5、在
view.py
中设置过滤类和过滤字段
# 自定义name过滤器
filterset_class = NameLikeFilter
# 设置过滤字段 (查询字段)
filter_fields = ['name']
# filterset_fields = ['name']
-
6、效果
搜索UI的结果
网友评论