django rest-framework模糊查询
时间: 2023-10-04 10:07:01 浏览: 237
在Django Rest Framework中,可以使用`SearchFilter`类来实现模糊查询。`SearchFilter`类是DRF提供的一个过滤器类,可以通过对查询字符串进行分析,对指定的字段进行模糊匹配。
1. 在视图类中添加`SearchFilter`过滤器类:
```python
from rest_framework.filters import SearchFilter
class MyView(APIView):
filter_backends = [SearchFilter]
search_fields = ['name', 'description']
```
2. 在`search_fields`中指定需要进行模糊查询的字段列表,例如上面的代码中指定了`name`和`description`两个字段。
3. 在查询字符串中添加`search`参数,例如:
```
http://example.com/api/myview/?search=test
```
这将会在`name`和`description`字段中查找包含`test`字符串的记录。
可以使用多个参数进行复合查询,例如:
```
http://example.com/api/myview/?search=test1+test2
```
这将会在`name`和`description`字段中查找包含`test1`和`test2`两个字符串的记录。
值得注意的是,`SearchFilter`过滤器类默认使用`icontains`进行模糊匹配,也就是说不区分大小写。如果需要区分大小写,可以在字段名后面添加`__contains`,例如:
```python
search_fields = ['name__contains', 'description__contains']
```
这将会使用`contains`进行模糊匹配,区分大小写。
阅读全文