對某一字段篩選
注:不是模糊篩選的都是完全匹配。
pip install django-filter==21.1
注:該版本為21.1,其它版本不可以用
2. 配置
在settings.py中的INSTSLL_APPS添加
'django_filters',
from django_filters import FilterSet
from .models import 庫名
class 庫名Filter(FilterSet):
class Meta:
model = Faculty
fields = ('字段',)
#注:要篩選的字段
from django_filters.rest_framework import DjangoFilterBackend
from .filter import 庫名Filter
class 庫名ViewSet(ModelViewSet):
queryset = 庫名.objects.all()
serializer_class = 庫名Serializer
filter_backends = (DjangoFilterBackend,)
#為個性化視圖設置,也可以全局設置
filter_class = 庫名Filter
全局設置filter_backends
#在settings.py中添加
REST_FRAMEWORK = {
'DEFAULT_FILTER_BACKENDS':[
'django_filters.rest_framework.DjangoFilterBackend',
],
}
注:在篩選類中重寫篩選代碼
from django_filters import FilterSet,filters
from .models import 庫名
#filters是模糊查詢類
class FacultyFilter(FilterSet):
字段名= filters.CharFilter(field_name='字段名',lookup_expr='icontains')
class Meta:
model = 庫名
fields = ('字段名',)