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 过滤和查询的更多相关文章
- Django模型类之models字段类型和参数以及元数据meta
models之字段类型和参数 示例: # class Test(models.Model): # courses_test # """测试学习用""& ...
- Django模型类Meta元数据详解
转自:https://my.oschina.net/liuyuantao/blog/751337 简介 使用内部的class Meta 定义模型的元数据,例如: from django.db impo ...
- 7.Django模型类的定义和管理
Django的模型类是给ORM层服务的 1.每个数据模型都是django.db.models.Model的子类. 2.它的父类Model包含了所有必要的和数据库交互的方法,并提供了定义数据库字段的语法 ...
- django模型类
模型类 ORM django中内嵌了ORM框架,ORM框架可以将类和数据表进行对应起来,只需要通过类和对象就可以对数据表进行操作. 在Django中主要是设计类:模型类. ORM另外一个作用:根据设计 ...
- Django(十)模型:django模型类对数据库的:增/删/改/查、自关联、管理器、元选项(指定表名)
一.插入.更新和删除 调用一个模型类对象的save方法的时候就可以实现对模型类对应数据表的插入和更新. 调用一个模型类对象的delete方法的时候就可以实现对模型类对应数据表数据的删除. 二.自关联 ...
- Django | 模型类变更后生成迁移文件,报错:You are trying to add a non-nullable field 'BookName' to BookInfo without a default....
报错: You are trying to add a non-nullable field 'BookName' to BookInfo without a default; we can't do ...
- django模型中, 外键字段使用to_filed属性 指定到所关联主表的某个字段
在django项目的开发过程中,在设计模型时一开始将主键设置成了一个自定义的字段,但是在创建搜索索引时却发现必须要存在一个id的字段,并且为主键(不知道是否是项目一开始就这样配置的原因), 但此时表结 ...
- django 模型中的计算字段
models.py class Person(models.Model): family_name= models.CharField(max_length=20, verbose_name='姓') ...
- 8.Django模型类例子
这里定义4个模型 作者:一个作者有姓名 作者详情:包括性别,email,出生日期, 出版商:名称,地址,城市,省,国家,网站 书籍:名称,日期 分析: 作者详情和作者一对一的关系 一本书可以有多个作者 ...
随机推荐
- Spark:java.net.BindException: Address already in use: Service 'SparkUI' failed after 16 retries!
Spark多任务提交运行时候报错. java.net.BindException: Address already retries! at sun.nio.ch.Net.bind0(Native Me ...
- [py]super调用父类的方法---面向对象
super()用于调用父类方法 http://www.runoob.com/python/python-func-super.html super() 函数是用于调用父类(超类)的一个方法. clas ...
- cloud-api-service和cloud-iopm-web提交merge方法
cloud-api-service应该push to '自己的分支',然后去gitserver请求合并 cloud-iopm-web(master分支)应该push to Upstream,然后去gi ...
- Linux下搭建redis服务器
1.redis需要gcc的编译环境,在线安装gcc:# yum install gcc-c++ 2.上传redis的压缩包到Linux系统,解压 3.进入源码目录,编译(注意要有makefile), ...
- 9个Linux系统常用监控命令
我们的系统一旦上线跑起来我们自然希望它一直相安无事,不要宕机,不要无响应,不要慢腾腾的.但是这不是打开机器电源然后放任不管就可以得到的.所以我们要监视系统的运行状况,发现问题及时处理. 对于系统和网络 ...
- [LeetCode] 405. Convert a Number to Hexadecimal_Easy tag: Bit Manipulation
Given an integer, write an algorithm to convert it to hexadecimal. For negative integer, two’s compl ...
- 常用 shell 命令
watch watch -n 1 -d "ps -ef | grep php" 功能:监控 PHP 进程的变化 原理: 重复的执行后面的命令,默认时间间隔是2秒 参数解释 -d 高 ...
- python regularexpress1
//test.py 1 import re 2 3 print (re.search('www', 'www.myweb.com').span()) 4 print (re.search('com', ...
- vue中兄弟组件间 的传值 bus(可以理解为公共交通)
点击大儿子(头部组件的年月日,下面的都要变化) 就相当于点击了年月日之后,下面的组件重新调接口,参数变化 1.首先随便哪儿写个bus.js 内容如下: import Vue from 'v ...
- SSH--完全分布式主机设置【克隆过安装过Hadoop的主机后】
====准备完全分布式主机的ssh==== 2018-12-21 14:27:47 1.删除所有主机上.ssh下所有文件 2.在s250主机上生成密钥对 $>ssh-keygen -t rsa ...