django中过滤 搜索 排序

django中过滤 搜索 排序

过滤

-对于列表数据可能需要根据字段进行过滤,我们可以通过添加django-fitlter扩展来增强支持。
pip install django-filter

-在配置文件中增加过滤后端的设置:
INSTALLED_APPS = [
...
'django_filters', # 需要注册应用,
]
-全局设置

REST_FRAMEWORK = {
    ...
    'DEFAULT_FILTER_BACKENDS': ('django_filters.rest_framework.DjangoFilterBackend',)
}```

-在视图中添加filter_fields属性,指定可以过滤的字段
from django_filters.rest_framework import DjangoFilterBackend
class BookListView(ListAPIView):
    queryset = BookInfo.objects.all()
    serializer_class = BookInfoSerializer
    -局部设置
    filter_backends = [DjangoFilterBackend]
    # 接口:/api/cars/?price=900000&brand=1
    filter_fields = ('brand', 'price') #过滤的字段


## 搜索  

```python
from rest_framework.filters import SearchFilter

 # 筛选
 filter_backends = [DjangoFilterBackend, SearchFilter]
 # 接口:/api/cars/?search=9 代表9在name或price两个字段进行模糊查询
 search_fields = ('name', 'price')

排序

from rest_framework.filters import OrderingFilter

# 排序
# 接口:/api/cars/?ordering=-id | /api/cars/?ordering=-price
filter_backends = [DjangoFilterBackend, SearchFilter, OrderingFilter]
ordering_fields = ('id', 'price')
原文地址:https://www.cnblogs.com/zhouze/p/11384953.html