drf 第三方 filter
安装第三方包
pip install django-filter
过滤1
view
from django_filters.rest_framework import DjangoFilterBackend
class BlogView(ModelViewSet):
queryset = models.Blog.objects.order_by('-id').all()
# serializer_class = BlogModelSerializer
pagination_class = MyPageNumberPagination
filter_backends = [DjangoFilterBackend, ]
# 为表里面的字段,只能精确的查询
filterset_fields = ['id', 'title']
结果

过滤2
自定义过滤器
from django_filters import rest_framework as filters
class MyFilter(filters.FilterSet):
# 大于等于
min_id = filters.NumberFilter(field_name='id', lookup_expr='gte')
# 小于等于
max_id = filters.NumberFilter(field_name='id', lookup_expr='lte')
# 等于
name = filters.CharFilter(field_name='title', lookup_expr='exact')
# 不等于
name_n = filters.CharFilter(field_name='title', lookup_expr='exact', exclude=True)
# 包含
name_c = filters.CharFilter(field_name='title', lookup_expr='contains')
# 开头
name_s = filters.CharFilter(field_name='title', lookup_expr='startswith')
class Meta:
model = models.Blog
fields = ['min_id','max_id']
view
class BlogView(ModelViewSet):
queryset = models.Blog.objects.order_by('-id').all()
# serializer_class = BlogModelSerializer
pagination_class = MyPageNumberPagination
filter_backends = [filters.DjangoFilterBackend, ]
filterset_class = MyFilter
结果


浙公网安备 33010602011771号