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解析模块(ConfigParser)使用方法
Dec 10 Python
Python学习之asyncore模块用法实例教程
Sep 29 Python
使用Python脚本对Linux服务器进行监控的教程
Apr 02 Python
在服务器端实现无间断部署Python应用的教程
Apr 16 Python
在Django中编写模版节点及注册标签的方法
Jul 20 Python
六行python代码的爱心曲线详解
May 17 Python
使用Python计算玩彩票赢钱概率
Jun 26 Python
Python 类的魔法属性用法实例分析
Nov 21 Python
Python GUI自动化实现绕过验证码登录
Jan 10 Python
Django+Celery实现动态配置定时任务的方法示例
May 26 Python
python进度条显示-tqmd模块的实现示例
Aug 23 Python
python中time tzset()函数实例用法
Feb 18 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
PHP开发规范手册之PHP代码规范详解
2011/01/13 PHP
php简单对象与数组的转换函数代码(php多层数组和对象的转换)
2011/05/18 PHP
PHP6 中可能会出现的新特性预览
2014/04/04 PHP
使用Thinkphp框架开发移动端接口
2015/08/05 PHP
PHP获取ttf格式文件字体名的方法示例
2019/03/06 PHP
excel操作之Add Data to a Spreadsheet Cell
2007/06/12 Javascript
jQuery实现精美的多级下拉菜单特效
2015/03/14 Javascript
jQuery调用ajax请求的常见方法汇总
2015/03/24 Javascript
javascript常用方法总结
2015/05/14 Javascript
鼠标经过子元素触发mouseout,mouseover事件的解决方案
2015/07/26 Javascript
jquery悬浮提示框完整实例
2016/01/13 Javascript
JavaScript数组去重的几种方法效率测试
2016/10/23 Javascript
Bootstrap3 图片(响应式图片&amp;图片形状)
2017/01/04 Javascript
JavaScript门面模式详解
2017/10/19 Javascript
原生JS封装_new函数实现new关键字的功能
2018/08/12 Javascript
Vue组件Draggable实现拖拽功能
2018/12/01 Javascript
JS 实现发送短信验证码的“59秒后重新发送验证短信”功能
2019/08/23 Javascript
小程序如何支持使用 async/await详解
2019/09/12 Javascript
javascript中contains是否包含功能实现代码(扩展字符、数组、dom)
2020/04/07 Javascript
鸿蒙系统中的 JS 开发框架
2020/09/18 Javascript
[02:23]2016国际邀请赛中国区预选赛wings晋级之路
2016/06/29 DOTA
python读取csv文件示例(python操作csv)
2014/03/11 Python
python使用urllib2实现发送带cookie的请求
2015/04/28 Python
Python3.6 Schedule模块定时任务(实例讲解)
2017/11/09 Python
使用python对excle和json互相转换的示例
2018/10/23 Python
某/etc/fstab文件中的某行如下: /dev/had5 /mnt/dosdata msdos defaults,usrquota 1 2 请解释其含义
2013/09/18 面试题
护理自荐信
2013/10/22 职场文书
业务副厂长岗位职责
2014/01/03 职场文书
给民警的表扬信
2014/01/08 职场文书
遗体告别仪式答谢词
2014/01/23 职场文书
探矿工程师自荐信
2014/01/24 职场文书
亮化工程实施方案
2014/03/17 职场文书
工作失职造成投诉的检讨书范文
2014/10/05 职场文书
实习护士自荐信
2015/03/25 职场文书
导游词之河姆渡遗址博物馆
2019/10/10 职场文书
仅用一句SQL更新整张表的涨跌幅、涨跌率的解决方案
2021/05/06 MySQL