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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Android Studio的安装,史上最详细(超多图)!!

    Android Studio的安装,史上最详细(超多图)!!androidstudio的安装,史上最详细!!欢迎前来观看,感觉有用就点波关注吧!custom欢迎前来观看,感觉有用就点波关注吧!1、首先下载Androidstudio安装包,可以从http://www.android-studio.org/下载最新版本,这里采用3.0版本进行演示,对应安装包为android-studio-ide-183.5522156-windows,…

    2022年6月14日
    41
  • c++算法之最长递增子序列(LIS)

    c++算法之最长递增子序列(LIS)题目:输入一个整数n,随后输入n个整数,求这个长度为n的序列中严格递增的子序列的最长长度。例:输入:6143265输出:3解题思路:动态规划。将输入的序列存入一个数组v中,另外再定义一个数组a,用以存储以当前数字v[i]结尾时,最长递增子序列的长度是多少。定义数组时,全部初始化为1,初始状态表示的是最坏的情况,以v[i]结尾的最长递增子序列就是v[i]它本身,长度为1。接着将v[i]逐一…

    2022年6月3日
    26
  • copy.deepcopy()_python 内存管理

    copy.deepcopy()_python 内存管理参考文章http://iaman.actor/blog/2016/04/17/copy-in-python**首先直接上结论:—–我们寻常意义的复制就是深复制,即将被复制对象完全再复制一遍作为独立的新个体单独存在。所以改变原有被复制对象不会对已经复制出来的新对象产生影响。—–而浅复制并不会产生一个独立的对象单独存在,他只是将原有的数据块打上一个新标签,所以当其中一个标签被…

    2022年10月3日
    0
  • jpeg图像压缩算法流程详解_图像压缩最快算法

    jpeg图像压缩算法流程详解_图像压缩最快算法JPEG是Joint Photographic Exports Group的英文缩写,中文称之为联合图像专家小组。该小组隶属于ISO国际标准化组织,主要负责定制静态数字图像的编码方法,即所谓的JPEG算法。JPEG专家组开发了两种基本的压缩算法、两种熵编码方法、四种编码模式。如下所示:压缩算法:(1)有损的离散余弦变换DCT(Discrete Cosine Transform)(2)无

    2022年10月28日
    0
  • Java之GUI编程(一)

    Java之GUI编程(一)

    2022年1月25日
    50
  • CSS中设置鼠标样式

    CSS中设置鼠标样式cursor规则是设定网页浏览时用户鼠标指针的样式,也就是鼠标的图形形状所有主流浏览器都支持cursor属性。注释:Opera9.3和Safari3不支持 url 值。注释:任何版本的InternetExplorer(包括IE8)都不支持属性值"inherit"。定义和用法cursor属性规定要显示的光标的类型(形状)。该属性定义了鼠标指针放在一个…

    2022年5月31日
    40

发表回复

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

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