django filters对数据过滤怎么做,代码是什么

Admin 2022-06-15 群英技术资讯 315 次浏览

这篇文章给大家分享的是“django filters对数据过滤怎么做,代码是什么”,对大家学习和理解有一定的参考价值和帮助,有这方面学习需要的朋友,接下来就跟随小编一起学习一下吧。

常用

当前循环. 作用
default 数据为空时设置默认值
length 取变量长度
filesizeformat 文件大小转成可读
slice 从指定位置到指定位切片
date datetime取到的时间,转成指定格式
safe 防止XSS攻击、加上safe才能传标签
truncatechars 取摘显示一段剩下的…

例子

{#格式   值|函数#}
{#    如果没有值,那么使用默认值#}
    <p>{{ bucunzai|default:'空的哦' }}</p>

{#    取出变量长度#}
    <q>{{ name }}--{{ name|length }}</q>

{#      文件大小转换成可读型  kb 自动转成bm、g、tb#}
    <p>文件大小{{ file_size|filesizeformat }}</p>

{#    切片 从指定位置到指定位 ,例:第3位到-2位#}
    <p>切片:{{ slice_str|slice:'3:-2' }}</p>

{#    把datetime取到的时间,转成指定格式#}
    <p>格式化:{{ now|date:'Y-m-d H:i:s' }}</p>

{#    如果后端内容包含标签,那么加上safe 才能转义(防止用户直接加script标签作弊)防XSS攻击#}
    <p>{{ h_html|safe }}</p>

{#    取摘要只显示一段,指定取长度后面...例:120个字符 #}
    <p>长文本:{{ p_str|truncatechars:12 }}</p>

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']

关于“django filters对数据过滤怎么做,代码是什么”就介绍到这了,如果大家觉得不错可以参考了解看看,如果想要了解更多,欢迎关注群英网络,小编每天都会为大家更新不同的知识。 群英智防CDN,智能加速解决方案

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。

猜你喜欢

成为群英会员,开启智能安全云计算之旅

立即注册
专业资深工程师驻守
7X24小时快速响应
一站式无忧技术支持
免费备案服务
免费拨打  400-678-4567
免费拨打  400-678-4567 免费拨打 400-678-4567 或 0668-2555555
在线客服
微信公众号
返回顶部
返回顶部 返回顶部
在线客服
在线客服