django rest framework 过滤 lim分页

一.过滤

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

猜你喜欢

转载自www.cnblogs.com/zhangqing979797/p/10117613.html
今日推荐