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
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章