快速开始
Django-filter 是一个通用的、可重用的应用程序,用于减轻编写一些更普通的视图代码。具体来说,它允许用户根据模型的字段过滤查询集,显示表单让他们这样做。
使用Django-filter完成高级过滤-快速开始
1)安装
pip install django-filter
INSTALLED_APPS = [
...
'django_filters',
]
2)使用
创建filter.py文件:
import django_filters
from blog.models import Monitor
# 为Monitor模型配置过滤字段和过滤方式,exact表示精确=,icontains表示模糊。请求分别为=和cpu_icontains= ,往后推都是这么写
class MonitorFilter(django_filters.FilterSet):
class Meta:
model = Monitor
fields = {
"cpu": ['exact', 'icontains'],
"mem": ['exact', 'icontains'],
"disk": ['exact', 'icontains', 'isnull'], # 等于、模糊、判空
"create_time": ['lt', 'lte', 'gte', 'in', 'year__lt', 'year__gt'], # 小于、小于等于、大于等于、之中、年份的小于大于、
}
在views里使用:
from django_filters.rest_framework import DjangoFilterBackend
class MonitorViewSet(ModelViewSet):
filter_backends = (DjangoFilterBackend,) # 过滤器默认后端
filter_class = MonitorFilter # 指定过滤器类
具体参考:
- https://www.jianshu.com/p/b7a7dc42c79f
- https://zhuanlan.zhihu.com/p/110060840
- https://zhuanlan.zhihu.com/p/113328475
80%的人都看过的文章
本文来自凡蜕博客(https://blog.ysboke.cn), 转载请带上地址.。
2022年6月10日 下午8:52 1F
也可以手动过滤