前言
如果需要满足前端各种筛选条件查询,我们使用drf
自带的会比较麻烦,比如查询书名中包含“国”字,日期大于“2020-1-1”等等诸如此类的请求,Django-filter
这个组件就是要解决这样的问题。
1.安装
Django-filter
支持的Python
版本和Django
版本、DRF
版本如下:
- Python: 3.5, 3.6, 3.7, 3.8
- Django: 1.11, 2.0, 2.1, 2.2, 3.0
- DRF: 3.10+
在虚拟环境中安装
pip3 install django-filter
在Django
的settings.py
文件中安装并配置django_filters
应用:
INSTALLED_APPS = [
...
'django_filters',
]
REST_FRAMEWORK = {
# 过滤器默认后端
'DEFAULT_FILTER_BACKENDS': (
'django_filters.rest_framework.DjangoFilterBackend',),
}
2.使用流程
我们通过一个简单的图书查询来说明如果在DRF中使用Django-filter
过滤器。图书模型如下:
# models.py
class BookInfo(models.Model):
title = models.CharField(max_length=200,verbose_name='标题')
pub_date = models.DateField(blank=True, null=True,verbose_name='出版日期')
read = models.IntegerField(null=True,verbose_name='阅读数量')
comment = models.IntegerField(null=True,verbose_name='评论数量')
image = models.CharField(max_length=200, blank=True, null=True,verbose_name='图片')
class Meta:
db_table = 'bookInfo&