django filters对数据过滤怎么做,代码是什么
Admin 2022-06-15 群英技术资讯 838 次浏览
这篇文章给大家分享的是“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']
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
这篇文章主要分享的是Python常见的几种数据加密方式,主要包括线性散列算法(签名算法)MD5,sha1、对称性加密算法 AES DES、非对称性加密算法 RSA,具体详细内容介绍,需要的小伙伴可以参考一下
这篇文章主要介绍了Python学习之名字,作用域,名字空间,紧接上一篇文章内容展开全文,需要的小伙伴可以参考一下,希望对你的学习有所帮助
math数学模块和random随机模块是Python常用的标准库之一。本文将详细为大家介绍一下这两个模块的使用方法,需要的小伙伴可以参考一下
这篇文章主要介绍了Python使用re模块实现okenizer,我们这里讲解用正则表达式构建简单的表达式分词器(tokenizer),它能够将表达式字符串从左到右解析为标记(tokens)流,需要的朋友可以参考下
当初学 Python 时,想要弄懂 Python 的错误信息的含义可能有点复杂。这里列出了常见的的一些让你程序 crash 的运行时错误。1)忘记在...
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008