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