DRF的过滤和排序

发布时间 2023-11-07 15:51:01作者: PiggThird

搜索组件、过滤排序组件

'''
排序:
from rest_framework.filters import OrderingFilter
按id正序倒叙排序,按price正序倒叙排列
使用:http://127.0.0.1:8000/course/free/?ordering=-id
配置类:
    filter_backends=[OrderingFilter]
配置字段:
    ordering_fields=['id','price']
    
    
内置过滤:
from rest_framework.filters import SearchFilter
使用:http://127.0.0.1:8000/course/free/?search=39
按照price过滤(表自有的字段直接过滤)
配置类:
    filter_backends=[SearchFilter]
配置字段:
    search_fields=['price']
    
第三方库:django-filter 比原生自带的好用
from django_filters.rest_framework import DjangoFilterBackend
支持自有字段的过滤还支持外键字段的过滤
http://127.0.0.1:8000/course/free/?course_category=1   # 过滤分类为1 (python的所有课程)
配置类:
    filter_backends=[DjangoFilterBackend]
配置字段:
    filter_fields=['course_category']
'''