django model常用字段类型
摘自 http://www.cnblogs.com/wt869054461/p/4014271.html
V=models.AutoField(**options) #int;在Django代码内是自增 V=models.DecimalField(max_digits=None, decimal_places=None<, **options>) #decimal V=models.FloatField(<**options>) #real V=models.BooleanField(**options) #boolean或bit V=models.NullBooleanField(<**options>) #bit字段上可以设置上null值 V=models.DateField(<auto_now=false, **options="" auto_now_add="False,">) #date #auto_now最后修改记录的日期;auto_now_add添加记录的日期 V=models.DateTimeField(<auto_now=false, **options="" auto_now_add="False,">) #datetime V=models.TimeField(<auto_now=false, **options="" auto_now_add="False,">) #time V=models.TextField(<**options>) #text V=models.XMLField(schema_path=None<, **options>) #text ——————————————————————————– V=models.ForeignKey(othermodel<, **options>) #外键,关联其它模型,创建关联索引 V=models.ManyToManyField(othermodel<, **options>) #多对多,关联其它模型,创建关联表 V=models.OneToOneField(othermodel<, parent_link=False, **options>) #一对一,字段关联表属性
V=models.AutoField(**options) #int;在Django代码内是自增 V=models.DecimalField(max_digits=None, decimal_places=None<, **options>) #decimal V=models.FloatField(<**options>) #real V=models.BooleanField(**options) #boolean或bit V=models.NullBooleanField(<**options>) #bit字段上可以设置上null值 V=models.DateField(<auto_now=false, **options="" auto_now_add="False,">) #date #auto_now最后修改记录的日期;auto_now_add添加记录的日期 V=models.DateTimeField(<auto_now=false, **options="" auto_now_add="False,">) #datetime V=models.TimeField(<auto_now=false, **options="" auto_now_add="False,">) #time V=models.TextField(<**options>) #text V=models.XMLField(schema_path=None<, **options>) #text ——————————————————————————– V=models.ForeignKey(othermodel<, **options>) #外键,关联其它模型,创建关联索引 V=models.ManyToManyField(othermodel<, **options>) #多对多,关联其它模型,创建关联表 V=models.OneToOneField(othermodel<, parent_link=False, **options>) #一对一,字段关联表属性
django 中model 作为数据资源指定了字段以及一些处理该相应的功能。通常情况下,每个model对应数据库中的一张表 每个model都是从django.core.meta.Model中派生出来的model中每个属性(class attribute)对应着数据库表中的一个字段非字段信息(Model metadata)在类中被称作METAField Objects每个class attributes对应着数据库中的一个字段,其应该是由meta.Filed的派生的。
from django.core import metaclass Person(meta.Model): first_name = meta.CharField(maxlength=30) last_name = meta.CharFiled("lastname",maxlength=30) 除了 ForeignKey, ManytoManyFiled OneToOneField 使用verbose_name关键字以外,第一个可选参数是用来为字段命名的,如果不设置,系统会自动为起起名。sites = meta.ManyToManyField(site,verbose_name="list of sites")
Field 选项
- null null 缺省设置为false.通常不将其用于字符型字段上,比如CharField,TextField上.字符型字段如果没有值会返回空字符串。
- blank 该字段是否可以为空。如果为假,则必须有值
- choices 一个用来选择值的2维元组。第一个值是实际存储的值,第二个用来方便进行选择。 SEX_CHOICES= (('F','Female'),('M','Male'),) coredb_columndb_index 如果为真将为此字段创建索引
- default 缺省值
- editable 如果为假,admin模式下将不能改写。缺省为真
- help_text admin模式下帮助文档
- primary_key 设置主键。如果没有设置django创建表时会自动加上 id = meta.AutoField('ID', primary_key=True) primary_key=True implies blank=False, null=False and unique=True. Only one primary key is allowed on an object. radio_admin 用于admin模式下将select转换为radio显示。只用于ForeignKey或者设置了choices
- unique 数据唯一
- unique_for_date title = meta.CharField(maxlength=30,unique_for_date='pub_date') 系统将不允许title和pub_date两个都相同的数据重复出现 unique_for_month / unique_for_year
- validator_list 有效性检查。非有效产生 django.core.validators.ValidationError 错误
- Field Types
- AutoField 自动增长的整型字段。通常无需自己添加
- BooleanFieldCharField 对于大量文字应该使用TextField。参数: maxlength
- DateField 参数:
- auto_now 自动设置为对象保存时刻的时间。对于类似最后改动之类的应用很有效
- auto_now_add 从最初保存对象至今的增量时间
- DateTimeField 同上EmailField 检查是否为email的CharField字段
- FileField 保存文件的相对路径名称 绝对路径需要在setting中设置 MEDIA_ROOT。对于ImageField设置 MEDIA_URL。 参数upload_to.相对于MEDIA_ROOT目录的子目录 通过get_<fieldname>_url获取绝对路径
- FilePathField 通过给定参数获取文件列表(个人感觉) path 必须要有。 文件系统的绝对路径 match 可选。一个正则表达式。用来做文件筛选过滤 recursive 可选。True 包含子目录查找 FilePathField(path="/home/images", match="foo.*" , recursive=True)
- FloatField 浮点数字段。两个必须选项 max_digits 数字最多位数 decimal_places 小数点位置 meta.FloatField(...,max_digits=5,decimal_places=2) /////100.00 ImageField
基本上同FileField.会进行文件格式检查。两个额外选项 height_field, width_field 如果设置这两项,会自动对图片进行缩放后再保存
需要 python Imaging library
IntegerFieldIPAddressField
"10.1.1.3" NullBooleanField
比BooleanField多了一个NULL状态 PhoneNumberField
美国格式电话号码 xxx-xxx-xxxx. CharField PositiveIntegerField
正整数 PositiveSmallIntegerField 一个小的正整数。根据数据库的设置 SlugField 小片断。
什么都可以。通常用来存url SlugField 被暗指 maxlength=50 db_index=True
选项: prepopulate_from 一个用来自动生成slug的字段列表 SmallIntegerFieldTextField TimeField
选项: auto-population(可能不对) from DateField and DateTimeField URLField
选项: verify_exists 如果为True ,系统自动检查该url是否存在不为404 USStateField
两字符美国州简写 XMLField 保存xml数据。
选项:schema_path .指定relaxNG格式schema用来检验xml合法性
字段列表纵览表
字段名 |
参数 |
意义 |
AutoField |
一个能够根据可用ID自增的 IntegerField |
|
BooleanField |
一个真/假(true/false)字段 |
|
CharField |
(max_length) |
一个字符串字段,适用于中小长度的字符串。对于长段的文字,请使用 TextField |
CommaSeparatedIntegerField |
(max_length) |
一个用逗号分隔开的整数字段 |
DateField |
([auto_now], [auto_now_add]) |
日期字段 |
DateTimeField |
时间日期字段,接受跟 DateField 一样的额外选项 |
|
EmailField |
一个能检查值是否是有效的电子邮件地址的 CharField |
|
FileField |
(upload_to) |
一个文件上传字段 |
FilePathField |
(path,[match],[recursive]) |
一个拥有若干可选项的字段,选项被限定为文件系统中某个目录下的文件名 |
FloatField |
(max_digits,decimal_places) |
一个浮点数,对应Python中的 float 实例 |
ImageField |
(upload_to, [height_field] ,[width_field]) |
像 FileField 一样,只不过要验证上传的对象是一个有效的图片。 |
IntegerField |
一个整数。 |
|
IPAddressField |
一个IP地址,以字符串格式表示(例如: "24.124.1.30" )。 |
|
NullBooleanField |
就像一个 BooleanField ,但它支持 None /Null 。 |
|
PhoneNumberField |
它是一个 CharField ,并且会检查值是否是一个合法的美式电话格式 |
|
PositiveIntegerField |
和 IntegerField 类似,但必须是正值。 |
|
PositiveSmallIntegerField |
与 PositiveIntegerField 类似,但只允许小于一定值的值,最大值取决于数据库. |
|
SlugField |
嵌条 就是一段内容的简短标签,这段内容只能包含字母、数字、下 划线或连字符。通常用于URL中 |
|
SmallIntegerField |
和 IntegerField 类似,但是只允许在一个数据库相关的范围内的数值(通常是-32,768到 +32,767) |
|
TextField |
一个不限长度的文字字段 |
|
TimeField |
时分秒的时间显示。它接受的可指定参数与 DateField 和 DateTimeField 相同。 |
|
URLField |
用来存储URL的字段。 |
|
USStateField |
美国州名称缩写,两个字母。 |
|
XMLField |
(schema_path) |
它就是一个 TextField ,只不过要检查值是匹配指定schema的合法XML。 |
通用字段参数列表(所有的字段类型都可以使用下面的参数,所有的都是可选的。)
参数名 |
意义 |
null |
如果设置为 True 的话,Django将在数据库中存储空值为 NULL 。默认为 False 。 |
blank |
如果是 True ,该字段允许留空,默认为 False 。 |
choices |
一个包含双元素元组的可迭代的对象,用于给字段提供选项。 |
db_column |
当前字段在数据库中对应的列的名字。 |
db_index |
如果为 True ,Django会在创建表格(比如运行 manage.py syncdb )时对这一列创建数据库索引。 |
default |
字段的默认值 |
editable |
如果为 False ,这个字段在管理界面或表单里将不能编辑。默认为 True 。 |
help_text |
在管理界面表单对象里显示在字段下面的额外帮助文本。 |
primary_key |
如果为 True ,这个字段就会成为模型的主键。 |
radio_admin |
默认地,对于 ForeignKey 或者拥有 choices 设置的字段,Django管理界面会使用列表选择框(<select>)。如果 radio_admin 设置为 True 的话,Django就会使用单选按钮界面。 |
unique |
如果是 True ,这个字段的值在整个表中必须是唯一的。 |
unique_for_date |
把它的值设成一个 DataField 或者 DateTimeField 的字段的名称,可以确保字段在这个日期内不会出现重复值。 |
unique_for_month |
和 unique_for_date 类似,只是要求字段在指定字段的月份内唯一。 |
unique_for_year |
和 unique_for_date 及 unique_for_month 类似,只是时间范围变成了一年。 |
verbose_name |
除 ForeignKey 、 ManyToManyField 和 OneToOneField 之外的字段都接受一个详细名称作为第一个位置参数。 |
django model常用字段类型的更多相关文章
- Django models 常用字段类型
1.CharField字符串字段,存较短的字符串,长文本要用TextField.必须的参数:max_length 字符的最大长度2.TextField容量很大的文本字段.admin中用 <tex ...
- Django中的常用字段类型与参数
Django中的常用字段类型 1. 数值型 以下都是数值相关的,比如AutoField,它在MySQL中的类型为int(11),而BooleanField在MySQL中对应的类型是tinyint(1) ...
- Django ORM 常用字段和参数
Django ORM 常用字段和参数 一:常用字段 AutoField int自增列,必须填入参数 primary_key=True.当model中如果没有自增列,则自动会创建一个列名为id的列. I ...
- Django(ORM常用字段)
day68 参考:http://www.cnblogs.com/liwenzhou/p/8688919.html 1. Django ORM常用字段: 1. AutoField ...
- Django框架之第六篇(模型层)--单表查询和必知必会13条、单表查询之双下划线、Django ORM常用字段和参数、关系字段
单表查询 补充一个知识点:在models.py建表是 create_time = models.DateField() 关键字参数: 1.auto_now:每次操作数据,都会自动刷新当前操作的时间 2 ...
- Django中常用字段
一.Django框架的常用字段 Django ORM 常用字段和参数 常用字段 常用字段 AutoField int自增列,必须填入参数 primary_key=True.当model中如果没有自增列 ...
- Django orm常用字段和字段参数
1.Object Relational Mapping(ORM) 1.1ORM介绍 ORM概念 对象关系映射(Object Relational Mapping,简称ORM)模式是一种为了解决面向对象 ...
- SQL常用字段类型
中文常用字段类型 1. 名称类 nvarchar(10) 2. 数量 int 3. 时间 date 4. 货币 money 5. 编号 ...
- Django中ORM常用字段类型及参数
常用字段: <1> CharField 字符串字段, 用于较短的字符串. CharField 要求必须有一个参数 maxlength, 用于从数据库层和Django校验层限制该字段所允许的 ...
随机推荐
- 压缩前端文件(html, css, js)
1:原因 在写前端代码时, 因为要尽可能的适合阅读会加入许多注释, 空格等, 这些在开发时是必要的, 但当你要发布时, 就需要让代码更加精简, 精简压缩的同时也混淆了代码, 安全性也加强了, 可以说是 ...
- Python【yagmail】模块发邮件
#步骤一:import yagmail #步骤二:实例化一个发邮件的对象username = '553637138@qq.com' #邮箱账号pwd='sa2008' #授权码mail = yagma ...
- [Spark]-Spark发展历程与基本概念
Hadoop十年 找了一张Hadoop十年的生态发展图: Spark概况: Apache Spark是一个开源簇运算框架,最初是由加州大学柏克莱分校AMPLab所开发.相对于Hadoop的MapRed ...
- Hadoop生态圈-注册并加载协处理器(coprocessor)的三种方式
Hadoop生态圈-注册并加载协处理器(coprocessor)的三种方式 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 到目前为止,大家已经掌握了如何使用过滤器来减少服务器端通过 ...
- Java基础-面向对象第二特征之继承(Inheritance)
Java基础-面向对象第二特征之继承(Inheritance) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.继承的概述 在现实生活中,继承一般指的是子女继承父辈的财产.在程序 ...
- java基础-迭代器(Iterator)与增强for循环
java基础-迭代器(Iterator)与增强for循环 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Iterator迭代器概述 Java中提供了很多个集合,它们在存储元素时 ...
- UIView的alpha属性和hidden属性
alpha 属性为0.0时视图完全透明,为1.0时视图完全不透明. hidden属性为YES时视图隐藏,否则不隐藏. 注意事项: 1 当视图完全透明或者隐藏时,不能响应触摸消息. 也就是alpha等于 ...
- Shell记录-Shell命令(find)
Linux中的find命令在目录结构中搜索文件,并执行指定的操作.Linux下find命令提供了相当多的查找条件,功能很强大.由于find具有强大的功能,所以它的选项也很多,其中大部分选项都值得我们花 ...
- axios post 踩坑之 post传参
今天在项目(vue2.0)使用axios进行post请求的时候,使用官方文档的格式传递给后台的数据是一整个json对象,参数已经传递出去了,但是后台获取不到,() 解决方法 利用aixos结合qs来解 ...
- LintCode 412: Candy
LintCode 412: Candy 题目描述 有 N 个小孩站成一列.每个小孩有一个评级. 按照以下要求,给小孩分糖果: 每个小孩至少得到一颗糖果. 评级越高的小孩可以得到更多的糖果. 需最少准备 ...