Django(67)drf搜尋過濾和排序過濾

Silent丿丶黑羽發表於2021-06-21

前言

當我們需要對後臺的資料進行過濾的時候,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",那麼我們就會過濾出所有寶馬系列的車子,並且資料的排序按照車的價格從低到高排序

相關文章