一.过滤
1.首先引用diango 自带的过滤配置
2.导入模块
from django_filters.rest_framework import DjangoFilterBackend from django_filters import rest_framework as filters
3.一种简单的过滤:
class BookView(ModelViewSet): queryset = Book.objects.all() serializer_class = BookSerializer filter_backends = (DjangoFilterBackend,) filter_fields = ('title', 'price')
通过在浏览器后面带上?price=100, 就可以精确过滤
自定义过滤
通过自己创建的过滤类来实现自定义过滤
class ProductFilter(filters.FilterSet): # 最小 min_price = filters.NumberFilter(field_name="price", lookup_expr="gte") # 最大 max_price = filters.NumberFilter(field_name="price", lookup_expr="lte") # 包含 name = filters.CharFilter(field_name="title", lookup_expr="icontains") # 通过?字段自定义过滤 class Meta: model = Book fields = ["min_price", "max_price", "name"]
BookViews
class BookView(ModelViewSet): queryset = Book.objects.all() serializer_class = BookSerializer filter_backends = (DjangoFilterBackend,) # 自定义过滤类 filter_class = ProductFilter