DRF框架之Filtering过滤查询
###我们用drf框架时,如何在不改动queryset(查询集)的情况下,增加一个过滤字段呢?
比如,一个表有下列字段:
【id,name,age,sex】
如果增加一个接口,获取所有年龄为12的数据
可以使用 django-filter模块
先下载
pip install django-filter
在INSTALLED_APPS中注册
INSTALLED_APPS = [
...
'django_filters',
...
]
然后添加一下配置
REST_FRAMEWORK = {
'DEFAULT_FILTER_BACKENDS': ['django_filters.rest_framework.DjangoFilterBackend']
}
最后在视图类中添加一下需要过滤的字段
class UserList(generics.ListAPIView):
queryset = User.objects.all()
serializer_class = UserSerializer
filterset_fields = ['age'] # age:过滤字段
参数是在查询字符串中查询,例:
127.0.0.0:8000/user/?age=12
感觉就是在List方法里,加了一个过滤,而且URL地址也是一样的
官方文档
https://www.django-rest-framework.org/api-guide/filtering/