zoukankan      html  css  js  c++  java
  • django中过滤 搜索 排序

    django中过滤 搜索 排序

    过滤

    -对于列表数据可能需要根据字段进行过滤,我们可以通过添加django-fitlter扩展来增强支持。
    pip install django-filter

    -在配置文件中增加过滤后端的设置:
    INSTALLED_APPS = [
    ...
    'django_filters', # 需要注册应用,
    ]
    -全局设置

    REST_FRAMEWORK = {
        ...
        'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',)
    }```
    
    -在视图中添加filter_fields属性,指定可以过滤的字段
    from django_filters.rest_framework import DjangoFilterBackend
    class BookListView(ListAPIView):
        queryset = BookInfo.objects.all()
        serializer_class = BookInfoSerializer
        -局部设置
        filter_backends = [DjangoFilterBackend]
        # 接口:/api/cars/?price=900000&brand=1
        filter_fields = ('brand', 'price') #过滤的字段
    
    
    ## 搜索  
    
    ```python
    from rest_framework.filters import SearchFilter
    
     # 筛选
     filter_backends = [DjangoFilterBackend, SearchFilter]
     # 接口:/api/cars/?search=9 代表9在name或price两个字段进行模糊查询
     search_fields = ('name', 'price')
    

    排序

    from rest_framework.filters import OrderingFilter
    
    # 排序
    # 接口:/api/cars/?ordering=-id | /api/cars/?ordering=-price
    filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
    ordering_fields = ('id', 'price')
    
  • 相关阅读:
    SQLite 的连接串
    输入数组长度大于此表中的列数
    MVC3.0入门学习笔记页面传值ViewData
    MVC3.0入门学习笔记页面传值TempData
    在控制台程序中显示进度
    WCF学习笔记(1) 一个简单的wcf实例
    webBrowser 操作无ID元素
    webBrowser 设置文本框
    cookie总结
    checkbox是否被选择
  • 原文地址:https://www.cnblogs.com/zhouze/p/11384953.html
Copyright © 2011-2022 走看看