📂drf
2022-10-14 09:30阅读: 40评论: 0推荐: 0

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']

结果

image

过滤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

结果

image

本文作者:Sherwin

本文链接:https://www.cnblogs.com/sherwin1995/p/16789102.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   Sherwin_szw  阅读(40)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
💬
评论
📌
收藏
💗
关注
👍
推荐
🚀
回顶
收起
  1. 1 404 not found REOL
404 not found - REOL
00:00 / 00:00
An audio error has occurred.