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
结果
本文作者:Sherwin
本文链接:https://www.cnblogs.com/sherwin1995/p/16789102.html
版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步