前言
當我們需要對後臺的資料進行過濾的時候,drf
有兩種,搜尋過濾和排序過濾。
搜尋過濾:比如我們想返回sex=1
的,那麼我們就可以從所有資料中進行篩選
排序過濾:比如我們想對價格進行升序排列,就可以使用排序過濾
搜尋過濾
在實際的使用過程中十分簡單,只需要在檢視類中配置一個全域性變數filter_backends
,然後在search_fields
確定需要通過哪個欄位進行篩選
from rest_framework.filters import SearchFilter
class CarView(ListAPIView):
serializer_class = CarSerializer
queryset = Car.objects.all()
# 區域性配置過濾類和排序類
filter_backends = [SearchFilter]
# SearchFilter過濾類依賴的過濾條件
search_fields = ['name']
之後我們在訪問url
地址時,就可以在url
後面新增?search="寶馬1系"
,那麼我們就會過濾出name
="寶馬1系"的資料
排序過濾
跟搜尋過濾一樣,只需要配置區域性變數filter_backends
,然後配置ordering_fields
來確定通過哪個欄位進行排序
from rest_framework.filters import SearchFilter, OrderingFilter
class CarView(ListAPIView):
serializer_class = CarSerializer
queryset = Car.objects.all()
# 區域性配置過濾類和排序類
filter_backends = [SearchFilter, OrderingFilter]
# SearchFilter過濾類依賴的過濾條件
search_fields = ['name']
# 區域性配置排序類
ordering_fields = ['price']
之後我們在訪問url
地址時,就可以在url
後面新增?search="寶馬"&ordering="price"
,那麼我們就會過濾出所有寶馬系列的車子,並且資料的排序按照車的價格從低到高排序