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')
    
  • 相关阅读:
    MVC4 @helper辅助方法
    Razor的主版页面框架
    Razor与HTML混合输出陷阱与技巧
    MVC4 razor与aspx的区别以及用法
    loj6100 「2017 山东二轮集训 Day1」第一题
    loj6087 毒瘤题
    「6月雅礼集训 2017 Day2」C
    「6月雅礼集训 2017 Day2」B
    「6月雅礼集训 2017 Day2」A
    「6月雅礼集训 2017 Day1」看无可看
  • 原文地址:https://www.cnblogs.com/zhouze/p/11384953.html
Copyright © 2011-2022 走看看