django_filters实现数据过滤

django_filters实现数据过滤1、视图classUserView(ListAPIView):”””用户列表”””queryset=User.objects.all()serializer_class=UserSerializerfilter_backends=(DjangoFilterBackend,)filter_class=UserMonthFilt…

大家好,又见面了,我是你们的朋友全栈君。

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.net/143578.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 属于iscsi使用的命令_tempadm

    属于iscsi使用的命令_tempadm[root@xifenfei~]#fdisk-lDisk/dev/sda:21.4GB,21474836480bytes255heads,63sectors/track,2610cylindersUnits=cylindersof16065*512=8225280bytesDeviceBootStartEndB…

    2022年8月23日
    8
  • [TopCoder] SRM 580 DIV 2, 250p, 500p, 1000p, Solution

    [TopCoder] SRM 580 DIV 2, 250p, 500p, 1000p, Solution

    2021年8月24日
    64
  • eclipse调试debug技巧_eclipse退出debug模式

    eclipse调试debug技巧_eclipse退出debug模式Eclipse中的debug模式使用指Debug模式是在eclipse的使用中非常常见的对程序进行debug的方式,通过debug模式我们可以更加方便快捷的定位问题出现的位置,并且找到原因进行修改.但是很多小白同学对debug模式的使用方式还不是很清楚,那么我这边会带着大家去了解一下eclipse的debug模式的使用; Debug模式的启动方式 在eclipse中,我们运行…

    2022年10月16日
    2
  • Unity3d的安装

    Unity3d的安装**Unity3d的安装**1.在线安装a.获取在线安装程序第一步:进入官网:https://unity.com/cn第二步:在主页的底部点击下载第三步:来到UnityStore,拖到该页面的最底部,点击资源下面的Unity旧版本第四步:来到Unity下载存档,拖动页面可以看到很多版本的Unity第五步:选择一个版本,这里我们选择Unity2017.x中的2017.1.0…

    2022年6月27日
    29
  • 学习Oracle这一篇就够了

    学习Oracle这一篇就够了配套资料,免费下载链接:https://pan.baidu.com/s/1yjJY3IstA8aMQBPYhWNlCw提取码:qmpd复制这段内容后打开百度网盘手机App,操作更方便哦第一章数据库概述1.1、数据库的好处将数据持久化到本地提供结构化查询功能1.2、数据库的常见概念DB:数据库,存储数据的仓库DBMS:数据库管理系统,又称为数据库软件或者数据库产品,用于创建和管理数据库,常见的有MySQL、Oracle、SQLServerDBS:数据库系统,数据库系统是一个通称

    2022年10月8日
    3
  • Java 的JSON、XML转换方法——目录索引(转)[通俗易懂]

    Java 的JSON、XML转换方法——目录索引(转)[通俗易懂]Java 的JSON、XML转换方法——目录索引(转)

    2022年4月22日
    62

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号