django-rest-framework类视图中的过滤(使用)

django-rest-framework filter 过滤设置(过滤字段,搜索,排序)

from django_filters.rest_framweork import DjangoFilterBackend
from rest_framework import filters

1. filter

  1. 准备事项:

    • 安装django-filter
    • 把django-filter放到app-install中
  2. filter字段,筛选你需要的信息:

    • 使用方法:

      • 在你的类视图中加:

        filter_backends = (filter_backends =(DjangoFilterBackend,)
      • 或者设置成全局的filter:在settings中添加:

        REST_FRAMEWORK = {
             'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',)
         }
      • 然后在类试图中加:

        filter_fields = ("id", "username")
        
        # 用以限定过滤的字段名,此处为根据id或username过滤
        
  3. search字段:使用django-admin的过滤策略

    • 使用方法:

      • 在试图中:

        filter_backends = (filters.SearchFilter,)
        serach_fields = ("username", "user__is_staff")
        
        # 可以用外键关联
        
      • url中的字段是serach:支持正则

        '^' Starts-with search.
        '=' Exact matches.
        '@' Full-text search. (Currently only supported Django's MySQL backend.)
        '$' Regex search.
  4. ordering 排序

    • 使用方法:

      filter_backends = (filters.OrderingFilter,)
      ordering_fields = ("username", "email")
      
      #  也可以ordering_fields = "__all__"
      
    • url中请求的时候的写法是:ordering=field_name

      
      # 可以用-值,如:ordering=-username
      
      http://website.xxx.com/users/?ordering=-username
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章