zoukankan      html  css  js  c++  java
  • Django(67)drf搜索过滤和排序过滤

    前言

    当我们需要对后台的数据进行过滤的时候,drf有两种,搜索过滤和排序过滤。
    搜索过滤:比如我们想返回sex=1的,那么我们就可以从所有数据中进行筛选
    排序过滤:比如我们想对价格进行升序排列,就可以使用排序过滤
     

    搜索过滤

    在实际的使用过程中十分简单,只需要在视图类中配置一个全局变量filter_backends,然后在search_fields确定需要通过哪个字段进行筛选

    from rest_framework.filters import SearchFilter
    class CarView(ListAPIView):
        serializer_class = CarSerializer
        queryset = Car.objects.all()
        # 局部配置过滤类和排序类
        filter_backends = [SearchFilter]
        # SearchFilter过滤类依赖的过滤条件
        search_fields = ['name']
    

    之后我们在访问url地址时,就可以在url后面添加?search="宝马1系",那么我们就会过滤出name="宝马1系"的数据

     

    排序过滤

    跟搜索过滤一样,只需要配置局部变量filter_backends,然后配置ordering_fields来确定通过哪个字段进行排序

    from rest_framework.filters import SearchFilter, OrderingFilter
    class CarView(ListAPIView):
        serializer_class = CarSerializer
        queryset = Car.objects.all()
        # 局部配置过滤类和排序类
        filter_backends = [SearchFilter, OrderingFilter]
        # SearchFilter过滤类依赖的过滤条件
        search_fields = ['name']
        # 局部配置排序类
        ordering_fields = ['price']
    

    之后我们在访问url地址时,就可以在url后面添加?search="宝马"&ordering="price",那么我们就会过滤出所有宝马系列的车子,并且数据的排序按照车的价格从低到高排序

  • 相关阅读:
    一个简单而经典的RTX51 Tiny应用实例
    基于HttpClient 4.3的可訪问自签名HTTPS网站的新版工具类
    动态绑定与动态分发-动态绑定暗含动态分发
    多态是面向接口编程的概念
    多态本质:多个对象共享同一接口 多态本质是共享接口
    Smalltalk
    Simula-Virtual function
    执行力
    目标、计划:下定决心 排除万难
    当断不断,必受其乱
  • 原文地址:https://www.cnblogs.com/jiakecong/p/14911435.html
Copyright © 2011-2022 走看看