过滤组件

基于django内置的过滤组

from django_filters.rest_framework import DjangoFilterBackend
from
rest_framework.generics import ListAPIView
需继承generics
class BooksGenericListApiView(ListAPIView): authentication_classes = [] queryset = models.Book.objects.all() serializer_class = BookModelSerializer filter_backends = [DjangoFilterBackend]
  定义过滤器
    filterset_fields=['title','addr']
  定义过滤方式和字段 这个只能写models内有的字段,不能写方法

路由
http://127.0.0.1:8000/b2oks/?price=46&addr=建德

 

排序组件

这个需要借用django_filter   pip install 即可

from django_filters.rest_framework import DjangoFilterBackend
from rest_framework.filters import OrderingFilter
from rest_framework.generics import ListAPIView
class BooksGenericListApiView(ListAPIView):
    authentication_classes = []
    queryset = models.Book.objects.all()
    serializer_class = BookModelSerializer
    filter_backends = [DjangoFilterBackend,OrderingFilter]
    filterset_fields=['title','addr']

    ordering_fields=['price','id']
  ordering_param = 'sort'
  这个属性不好使
路由
http://127.0.0.1:8000/b2oks/?ordering=-id

 

posted on 2023-05-04 09:36  阿勒泰的鱼  阅读(23)  评论(0)    收藏  举报