django-rest-framework filter 過濾設置(過濾字段,搜索,排序)
from django_filters.rest_framweork import DjangoFilterBackend
from rest_framework import filters
1. filter
準備事項:
- 安裝django-filter
- 把django-filter放到app-install中
filter字段,篩選你需要的信息:
使用方法:
在你的類視圖中加:
filter_backends = (filter_backends =(DjangoFilterBackend,)
或者設置成全局的filter:在settings中添加:
REST_FRAMEWORK = { 'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',) }
然後在類試圖中加:
filter_fields = ("id", "username") # 用以限定過濾的字段名,此處爲根據id或username過濾
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.
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