django_filters实现数据过滤
django,filters,实现,数据,过滤
2025-03-28 09:01:01 时间
大家好,又见面了,我是你们的朋友全栈君。
1、视图
class UserView(ListAPIView):
"""用户列表"""
queryset = User.objects.all()
serializer_class = UserSerializer
filter_backends = (DjangoFilterBackend,)
filter_class = UserMonthFilter # 指定过滤类
2、过滤类
class RobotFilter(django_filters.FilterSet):
# 使用过滤:URL?created_start_time=2020_01-20&created_end_time=2020_01-21
robot_id = django_filters.CharFilter(field_name='id')
machine_id = django_filters.CharFilter(field_name='machine_id')
city = django_filters.CharFilter(field_name='city')
# lookup_expr(可选)为判断条件,field_name(必选)为模型类属性,created_time查询字符串
created_time= django_filters.CharFilter(field_name='created_at', lookup_expr='startswith')
created_start_time = django_filters.DateTimeFilter(field_name='created_at', lookup_expr='gt')
created_end_time = django_filters.DateTimeFilter(field_name='created_at', lookup_expr='lt')
problem_isnull = django_filters.BooleanFilter(field_name='problem', lookup_expr='isnull')
name = django_filters.CharFilter(lookup_expr='iexact') # iexact表示精确匹配, 并且忽略大小写
author = django_filters.CharFilter(lookup_expr='icontains') #icontains表示模糊查询(包含),并且忽略大小写
price = django_filters.NumberFilter(look_expr='exact') #exact表示精确匹配
task_res_state = django_filters.CharFilter(method="get_task_res_state")
def get_task_res_state(self, queryset, *arg):
if str(arg[1]) == "0": # arg[1]=('task_res_state', '0')
task_res = (1, 2, 3)
else:
task_res = (0, 4, 5, 6)
print(task_res)
queryset = queryset.filter(task_res__in=task_res)
return queryset
class Meta:
model = Robot
fields = ['robot_id', 'machine_id', "city", "created_start_time", "created_end_time", 'created_time',
'firmware_version', 'state', "robot_type", "hardware_version", "exist_map", 'task_res_state']
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/143578.html原文链接:https://javaforall.cn
如果您是在找激活码,但输入激活码后激活失败,最新激活码地址:https://javaforall.cn/127239.html
相关文章
- django在docker环境中断点调试
- django:Content-Disposition filename:日本語 pdf csv output
- Django的设计模式
- vue django mysql_Python MySQL
- pycharm django环境搭建_挣钱项目
- 在pycharm中安装pip_pycharm安装django
- pycharm配置django环境_pycharm的terminal默认环境
- Django学习记录
- Python项目52-Django封装支付宝支付
- Python进阶32-Django forms组件
- pycharm django环境搭建_IDEA如何创建项目
- Python进阶28-Django 模板层(Jinja2)
- 一个Django项目:搭建基本自动化运维平台[通俗易懂]
- Django的ORM操作-删除数据
- django pycharm_pycharm调试django
- 最简单的 Django 教程
- Python进阶31-Django 分页器
- Python项目部署-使用Nginx部署Django项目
- Django的聚合查询与原生操作
- Django的ORM字段类型-2