django filter过滤器实现显示某个类型指定字段不同值方式


Posted in Python onJuly 16, 2020

1,前端样式

django filter过滤器实现显示某个类型指定字段不同值方式

2,html代码

{% load asset_filter %}
<div class="col-sm-2">
 <select class="input-sm form-control select2 inline" name="ServiceModel">
 <option value="">模块</option>
 {% for i in 'Ecs'|ecs_model_field_distinct:'ServiceModel' %}
 {% if i.0 %}
 <option value="{{ i.0 }}">{{ i.0 }}</option>
 {% endif %}
 {% endfor %}
 </select>
</div>

3,后端代码

asset_filter.py 内容如下:

@register.filter(name='ecs_model_field_distinct')
def ecs_model_field_distinct(model_name, field_name):
 '''
 获取model_name模块对象的某个属性field_name的distinct值,返回值的数组
 :param model_name:
 :param field_name:
 :return:
 '''
 asset_app = apps.get_app_config('rule')
 return asset_app.get_model(model_name).objects.all().values_list(field_name).distinct()

补充知识:django 模型类的常见字段约束,以及filter 过滤和查询

null

不设置时默认设置为False。设置为True时,数据库表字段中将存入NULL的记录。 null和blank组合使用,null=True,blank=True,表示该字段可以为空

blank

默认设置为False。设置为True时,表字段许可无任何输入。设置为False 时,表字段为必须输入的字段

choices

备选设置。选择列表选项,如果设置后,该字段的表单必然会是下拉选择的。这个值必须是一个有小括号构成的元组,每个元组前一个字段将存入数据库,后一个字段是显示给用户看的。

default

默认值,设置后在用户无输入时,表字段将以这个选项的内容来存储到数据库字段

可以为python 支持的任意数据对象

editable

如何设置为False,将不会参与到表单的验证。默认是设置为True的

error_messages

这个选项实现校验时的错误提示。是字典结构的内容。

help_text

在表单中形成输入提示内容

primary_key

主键,设置为 True ,该字段将启用为主键。 默认是 False

unique

设置为 True 启用不存在重复值输入的设定,默认为False

unique_for_date

设定日期不存在重复输入,默认为False

verbose_name

字段的文本标签

validators

校验选项,用来配置校验的方法,构成的列表。

max_length

最大输入字符串的长度

min_length

最少输入字符串的长度

AutoField 自动增值的id字段

primary_key=True 为必设置选项

BigAutoField 自动增值的id字段

支持 1 到 9223372036854775807,之间的序号

BigIntegerField 长整形字段

从 -9223372036854775808 到9223372036854775807 的整数

BinaryField 二进制字段

存储内存二进制数据,以 python bytes 对象来访问

BooleanField 布尔值字段

如果许可空的布尔值输入,换用 NullBooleadField

CharField可变长字符串字段

max_length 有最大输入选项为必须设置的选项

DateField日期字段

auto_now:每一次保存对象时,Django 都会自动将该字段的值设置为当前时间。一般用来表示 "最后修改" 时间。要注意使用的是当前日期,而并非默认值,所以

不能通过重写默认值的办法来改变保存时间。

auto_now_add:在第一次创建对象时,Django 自动将该字段的值设置为当前时间,一般用来表示对象创建时间。它使用的同样是当前日期,而非默认值

DateTimeField 有时刻的日期字段

auto_now=False

auto_now_add=False

当auto_now或者auto_now_add设置为True时,字段会有editable=True和blank=True的设定

; 固定精度的十进制数的字段。

它有两个必须的参数

max_digits:数字允许的最大位数

decimal_places:小数的最大位数

例如,要存储的数字最大值是999,而带有两个小数位,你可以使用

models.DecimalField(..., max_digits=5, decimal_places=2)

DurationField 日期时间增量型字段,存储着python timedelta 类数据

EmailField 邮件字段

FileField 文件字段

FilePathField 文件路径字段

FloatField 小数字段

ImageField 图片字段

IntegerField 整数字段

GenericIPAddressField ip地址字段

NullBooleanField 许可null的布尔值字段

PositiveIntegerField

0 到 2147483647,支持所有数据库取值范围的安全整数。

PositiveSmallIntegerField

0 到 32767 支持所有数据库取值范围的安全短整数。

SlugField

SmallIntegerField 短整形字段

TextField 备注型字段,用于存储复杂

TimeField 时间字段

URLField 网址字段

UUIDField

Python UUID 数据对象,一个32位长度的ID字符串

映射字段

ForeignKeyField 一对多字段

映射字段

ManyToManyField 多对多字段

映射字段

OneToOneField 一对一字段

表的查询

查询

Person.objects.all().order_by(“-username”) 按照username字段值 反向排序

Person.objects.all()[:10]切片操作,获取10个人,不支持负索引,切片可以节约内存,不支持负切片

Person.objects.get(name=name) get获取不到报异常,不可取

get是用来获取一个对象的,如果需要获取满足条件的一些人,就要用到filter

Person.objects.filter(name="abc")# 等于

Person.objects.filter(name__exact="abc")名称严格等于 "abc" 的人

Person.objects.filter(name__iexact="abc")# 名称为abc 但是不区分大小写,可以找到ABC, Abc, aBC,这些都符合条件

***Person.objects.filter(name__contains="abc")# 名称中包含"abc"的人

***Person.objects.filter(name__icontains="abc")#名称中包含"abc",且abc不区分大小写

Person.objects.filter(name__regex="^abc")# 正则表达式查询

Person.objects.filter(name__iregex="^abc")#正则表达式不区分大小写

****

Person.objects.filter(age__gt=15)# age > 15

Person.objects.filter(age__lt=15)# age < 15

Person.objects.filter(age__gte=15)# age >= 15

Person.objects.filter(age__lte=15)# age <= 15

Person.objects.filter(age__ne=15)# age != 15

数据的归档

times = Person.objects.datas('add_time','month',order='desc') 默认正序,desc 倒序

month 表示精准到月

前端页面

{% for time in times %}

{{ time.year }} 年 {{time.month}} 月 {{time.day}}日 精准到月,这个time.day 永远是 1

{% endfor %}

filter 过滤有多个条件时

使用django的Q对象表示或者

from django.db.models import Q

Person.objects.filter(Q(name='张三') | Q(age=18))

查询过滤字段

__exact 精确等于 like 'aaa'

__iexact 精确等于 忽略大小写 ilike 'aaa'

__contains 包含 like'%aaa%'

__icontains 包含 忽略大小写 ilike '%aaa%',但是对于sqlite来说,contains的作用效果等同于icontains。

__gt 大于

__gte 大于等于

__lt 小于

__lte 小于等于

__in存在于一个list范围内

*****

__startswith以...开头

__istartswith以...开头忽略大小写

__endswith以...结尾

__iendswith以...结尾,忽略大小写

__range 在...范围内

__year日期字段的年份 如 .filter(add_time_year ='2018') 筛选添加时间年份为2018年的数据

__month日期字段的月份

__day日期字段的日

__isnull=True/False

以上这篇django filter过滤器实现显示某个类型指定字段不同值方式就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
用python实现面向对像的ASP程序实例
Nov 10 Python
在 Python 应用中使用 MongoDB的方法
Jan 05 Python
python自动化脚本安装指定版本python环境详解
Sep 14 Python
python编程嵌套函数实例代码
Feb 11 Python
Windows下anaconda安装第三方包的方法小结(tensorflow、gensim为例)
Apr 05 Python
Python装饰器知识点补充
May 28 Python
Python 打印中文字符的三种方法
Aug 14 Python
python3学生名片管理v2.0版
Nov 29 Python
网易2016研发工程师编程题 奖学金(python)
Jun 19 Python
pip 安装库比较慢的解决方法(国内镜像)
Oct 06 Python
利用python 读写csv文件
Sep 10 Python
如何基于matlab相机标定导出xml文件
Nov 02 Python
解决python对齐错误的方法
Jul 16 #Python
Python爬虫实例——爬取美团美食数据
Jul 15 #Python
django Model层常用验证器及自定义验证器详解
Jul 15 #Python
浅谈Django前端后端值传递问题
Jul 15 #Python
浅谈python出错时traceback的解读
Jul 15 #Python
Django视图、传参和forms验证操作
Jul 15 #Python
一文解决django 2.2与mysql兼容性问题
Jul 15 #Python
You might like
DC《小丑》11项提名领跑奥斯卡 Netflix成第92届奥斯卡提名最大赢家
2020/04/09 欧美动漫
PHP读取ACCESS数据到MYSQL的代码
2011/05/11 PHP
php生成随机颜色的方法
2014/11/13 PHP
php发送邮件的问题详解
2015/06/22 PHP
php curl模拟post请求和提交多维数组的示例代码
2015/11/19 PHP
Yii CDBCriteria常用方法实例小结
2017/01/19 PHP
laravel validate 设置为中文的例子(验证提示为中文)
2019/09/29 PHP
javascript new后的constructor属性
2010/08/05 Javascript
javascript仿php的print_r函数输出json数据
2013/09/13 Javascript
使用jQuery快速解决input中placeholder值在ie中无法支持的问题
2014/01/02 Javascript
跟我学习javascript的prototype,getPrototypeOf和__proto__
2015/11/17 Javascript
JavaScript mixin实现多继承的方法详解
2017/03/30 Javascript
对vue2.0中.vue文件页面跳转之.$router.push的用法详解
2018/08/24 Javascript
基于AngularJs select绑定数字类型的问题
2018/10/08 Javascript
vue实现标签云效果的方法详解
2019/08/28 Javascript
Python常用列表数据结构小结
2014/08/06 Python
使用C语言扩展Python程序的简单入门指引
2015/04/14 Python
Python实现抓取网页生成Excel文件的方法示例
2017/08/05 Python
关于python2 csv写入空白行的问题
2018/06/22 Python
Python3+django2.0+apache2+ubuntu14部署网站上线的方法
2018/07/07 Python
django+xadmin+djcelery实现后台管理定时任务
2018/08/14 Python
用python3教你任意Html主内容提取功能
2018/11/05 Python
Python实现的在特定目录下导入模块功能分析
2019/02/11 Python
Python 数据可视化pyecharts的使用详解
2019/06/26 Python
pybind11在Windows下的使用教程
2019/07/04 Python
python 实现Flask中返回图片流给前端展示
2020/01/09 Python
python设置表格边框的具体方法
2020/07/17 Python
python3将变量输入的简单实例
2020/08/19 Python
聊聊python中的异常嵌套
2020/09/01 Python
HTML5标签使用方法详解
2015/11/27 HTML / CSS
博士学位自我鉴定范文
2013/12/26 职场文书
土建施工员岗位职责
2014/07/16 职场文书
论群众路线学习笔记
2014/11/06 职场文书
小学开学典礼新闻稿
2015/07/17 职场文书
postgresql使用filter进行多维度聚合的解决方法
2021/07/16 PostgreSQL
MySQL 计算连续登录天数
2022/05/11 MySQL