Django-models的字段类型
model的field类型
1、models.AutoField ---自增列 = int(11) 如果没有的话,默认会生成一个名称为 id 的列,如果要显示的自定义一个自增列,必须将给列设置为主键 primary_key=True。
2、models.CharField ---字符串字段 单行输入,用于较短的字符串,如要保存大量文本, 使用 TextField。必须 max_length 参数,django会根据这个参数在数据库层和校验层限制该字段所允许的最大字符数。
3、models.BooleanField ---布尔类型=tinyint(1) 不能为空,Blank=True
4、models.ComaSeparatedIntegerField ---用逗号分割的数字=varchar 继承CharField,所以必须 max_lenght 参数,
5、models.DateField ---日期类型 date 对于参数,auto_now = True 则每次更新都会更新这个时间;auto_now_add 则只是第一次创建添加,之后的更新不再改变。
6、models.DateTimeField ---日期类型 datetime 同DateField的参数
7、models.Decimal ---十进制小数类型 = decimal 必须指定整数位max_digits和小数位decimal_places
8、models.EmailField ---字符串类型(正则表达式邮箱) =varchar 对字符串进行正则表达式 一个带有检查 Email 合法性的 CharField,不接受 maxlength 参数。
9、models.FloatField ---浮点类型 = double 浮点型字段。 必须提供两个 参数, 参数描述:
max_digits:总位数(不包括小数点和符号)
decimal_places:小数位数。如:要保存最大值为
999 (小数点后保存2位),你要这样定义字段:models.FloatField(…,max_digits=5,
decimal_places=2),要保存最大值一百万(小数点后保存10位)的话,你要这样定义:models.FloatField(…,max_digits=19,
decimal_places=10)
10、models.IntegerField ---整形 用于保存一个整数
11、models.BigIntegerField ---长整形
integer_field_ranges = {
'SmallIntegerField': (-32768, 32767),
'IntegerField': (-2147483648, 2147483647),
'BigIntegerField': (-9223372036854775808, 9223372036854775807),
'PositiveSmallIntegerField': (0, 32767),
'PositiveIntegerField': (0, 2147483647),
}
12、models.IPAddressField ---字符串类型(ip4正则表达式) 一个字符串形式的 IP 地址, (如 “202.1241.30″)。
13、models.GenericIPAddressField ---字符串类型(ip4和ip6是可选的) 参数protocol可以是:both、ipv4、ipv6 验证时,会根据设置报错
14、models.NullBooleanField
---允许为空的布尔类型 类似 BooleanField, 不过允许 NULL 作为其中一个选项。 推荐使用这个字段而不要用
BooleanField 加 null=True 选项。 admin 用一个选择框 <select> (三个可选择的值:
“Unknown”, “Yes” 和 “No” ) 来表示这种字段数据。
15、models.PositiveIntegerField ---正Integer 类似 IntegerField, 但取值范围为非负整数(这个字段应该是允许0值的…可以理解为无符号整数)
16、models.PositiveSmallIntegerField ---正smallInteger 正小整型字段,类似
PositiveIntegerField, 取值范围较小(数据库相关)SlugField“Slug” 是一个报纸术语。 slug
是某个东西的小小标记(短签), 只包 含字母,数字,下划线和连字符。它们通常用于URLs。 若你使用 Django 开发版本,你可以指定
maxlength。 若 maxlength 未指定, Django 会使用默认长度: 50,它接受一个额外的参数:
prepopulate_from: 来源于slug的自动预置列表
17、models.SlugField ---减号、下划线、字母、数字 它们通常用于URLs。
# "Slug" 是一个报纸术语. slug 是某个东西的小小标记(短签), 只包含字母,数字,下划线和连字符.#它们通常用于URLs 77
# 若你使用 Django 开发版本,你可以指定 maxlength. 若 maxlength 未指定, Django 会使用默认长度: 50. #在 78
# 以前的 Django 版本,没有任何办法改变50 这个长度. 79
# 这暗示了 db_index=True. 80
# 它接受一个额外的参数: prepopulate_from, which is a list of fields from which to auto-#populate 81
# the slug, via JavaScript,in the object's admin form: models.SlugField 82
# (prepopulate_from=("pre_name", "name"))prepopulate_from 不接受 DateTimeFields.
18、models.SmallIntegerField ---数字 数据库中的字段有:tinyint、smallint、int、bigint. 类似 IntegerField, 不过只允许某个取值范围内的整数。(依赖数据库)
19、models.TextField ---字符串=longtext ,一个容量很大的文本字段, admin 管理界面用 <textarea>多行编辑框表示该字段数据。
20、models.TimeField ---时间 HH:MM[:ss[.uuuuuu]] 时间字段,类似于 DateField 和 DateTimeField。
21、models.URLField ---字符串,地址正则表达式 用于保存URL。若 verify_exists 参数为 True (默认), 给定的 URL 会预先检查是否存在(即URL是否被有效装入且没有返回404响应).
22、models.BinaryField ---二进制
23、models.ImageField
---图片 类似 FileField, 不过要校验上传对象是否是一个合法图片。它有两个可选参数:height_field 和
width_field,如果提供这两个参数,则图片将按提供的高度和宽度规格保存。 该字段要求 Python Imaging 库。
24、models.FilePathField ---选择指定目录按限制规则选择文件,有三个参数可选, 其中”path”必需的,这三个参数可以同时使用, 参数描述:
path:必需参数,一个目录的绝对文件系统路径。 FilePathField 据此得到可选项目。
Example: “/home/images”;
match:可选参数,
一个正则表达式, 作为一个字符串, FilePathField 将使用它过滤文件名。 注意这个正则表达式只会应用到 base filename
而不是路径全名。
Example: “foo。*\。txt^”, 将匹配文件 foo23.txt 却不匹配 bar.txt 或
foo23.gif;
recursive:可选参数, 是否包括 path 下全部子目录,True 或 False,默认值为 False。
match 仅应用于
base filename, 而不是路径全名。 如:FilePathField(path=”/home/images”,
match=”foo.*”, recursive=True)…会匹配 /home/images/foo.gif 而不匹配
/home/images/foo/bar.gif
25、models.FileField
---文件上传字段。 要求一个必须有的参数: upload_to, 一个用于保存上载文件的本地文件系统路径。 这个路径必须包含
strftime formatting, 该格式将被上载文件的 date/time 替换(so that uploaded files
don’t fill up the given directory)。注意:在一个 model 中使用 FileField 或 ImageField
需要以下步骤:(1)在你的 settings 文件中, 定义一个完整路径给 MEDIA_ROOT 以便让 Django在此处保存上传文件。
(出于性能考虑,这些文件并不保存到数据库。) 定义 MEDIA_URL 作为该目录的公共 URL。 要确保该目录对 WEB
服务器用户帐号是可写的。(2)在你的 model 中添加 FileField 或 ImageField, 并确保定义了 upload_to
选项,以告诉 Django 使用 MEDIA_ROOT 的哪个子目录保存上传文件。你的数据库中要保存的只是文件的路径(相对于
MEDIA_ROOT)。 出于习惯你一定很想使用 Django 提供的 get_<fieldname>_url
函数。举例来说,如果你的 ImageField 叫作 mug_shot, 你就可以在模板中以 {{
object。get_mug_shot_url }} 这样的方式得到图像的绝对路径。
26、models.PhoneNumberField ---一个带有合法美国风格电话号码校验的 CharField(格式:XXX-XXX-XXXX)
27、models.USStateField ---美国州名缩写,由两个字母组成(天朝人民无视)。
28、models.XMLField ---XML字符字段,校验值是否为合法XML的 TextField,必须提供参数:
schema_path:校验文本的 RelaxNG schema 的文件系统路径。
Field 选项中的参数意义:
1.null :缺省设置为false.通常不将其用于字符型字段上,比如 CharField,TextField上.字符型字段如果没有值会返回空字符串。
null=True
数据库中字段是否可以为空
2.blank:该字段是否可以为空。如果为假,则必须有值
blank=True
django的 Admin 中添加数据时是否可允许空值
3.choices:一个用来选择值的2维元组。第一个值是实际存储的值,第二个用来方便进行选择。如SEX_CHOICES= ((‘F’,'Female’),(‘M’,'Male’),)
gender = models.CharField(max_length=2,choices = GENDER_CHOICE)
这里我们用在内存创建一个关联,来取代再创建一个简单的表来关联
4.core:db_column,db_index 如果为真将为此字段创建索引
5.default:设定缺省值
6.editable:如果为假,admin模式下将不能改写。缺省为真
7.help_text:admin模式下帮助文档
8.primary_key:设置主键,如果没有设置django创建表时会自动加上:
primary_key = False
主键,对AutoField设置主键后,就会代替原来的自增 id 列
9.radio_admin:用于admin模式下将select转换为radio显示。只用于ForeignKey或者设置了choices
10.unique:数据唯一 unique=True. Only one
11.unique_for_date:日期唯一,如下例中系统将不允许title和pub_date两个都相同的数据重复出现
12.title = meta.CharField(maxlength=30,unique_for_date=’pub_date’)
13.unique_for_month / unique_for_year:用法同上
14.validator_list:有效性检查。非有效产生 django.core.validators.ValidationError 错误
15、auto_now 和 auto_now_add
auto_now 自动创建---无论添加或修改,都是当前操作的时间
auto_now_add 自动创建---永远是创建时的时间
16、verbose_name Admin中字段的显示名称
17、name|db_column 数据库中的字段名称
18、db_index = True 数据库索引
19、error_messages=None 错误提示
把错误提示修改成你想要的报错,这里加个字典来完成 gender = models.CharField(max_length=2,choices = GENDER_CHOICE,error_messages={"错误类型":"错误原因"})
20、auto_created=False 自动创建
21、validators=[] 提示区间,例如电话号码范围
22、upload-to 文件上传功能 在 FileField 里加入 例如: file = modles.FileField(upload-to = "./upload/" 指明上传的文件防止根目录下的/upload/文件夹下
meta详解:
1.abstract
这个属性是定义当前的模型是不是一个抽象类。所谓抽象类是不会对应数据库表的。一般我们用它来归纳一些公共属性字段,然后继承它的子类可以继承这些字段。
Options.abstract
如果abstract = True 这个model就是一个抽象类
2.app_label
这个选型只在一种情况下使用,就是你的模型不在默认的应用程序包下的models.py文件中,这时候需要指定你这个模型是哪个应用程序的。
Options.app_label
如果一个model定义在默认的models.py,例如如果你的app的models在myapp.models子模块下,你必须定义app_label让Django知道它属于哪一个app
app_label = 'myapp'
3.db_table
db_table是指定自定义数据库表名的。Django有一套默认的按照一定规则生成数据模型对应的数据库表明。
Options.db_table
定义该model在数据库中的表名称
db_table = 'Students'
如果你想使用自定义的表名,可以通过以下该属性
table_name = 'my_owner_table'
4.db_teblespace
Options.db_teblespace
定义这个model所使用的数据库表空间。如果在项目的settin中定义那么它会使用这个值
5.get_latest_by
Options.get_latest_by
在model中指定一个DateField或者DateTimeField。这个设置让你在使用model的Manager上的lastest方法时,默认使用指定字段来排序
6.managed
Options.managed
默认值为True,这意味着Django可以使用syncdb和reset命令来创建或移除对应的数据库。默认值为True,如果你不希望这么做,可以把manage的值设置为False
7.order_with_respect_to
这个选项一般用于多对多的关系中,它指向一个关联对象,就是说关联对象找到这个对象后它是经过排序的。指定这个属性后你会得到一个get_xxx_order()和set_xxx_order()的方法,通过它们你可以设置或者回去排序的对象
8.ordering
这个字段是告诉Django模型对象返回的记录结果集是按照哪个字段排序的。这是一个字符串的元组或列表,没有一个字符串都是一个字段和用一个可选的表明降序的'-'构成。当字段名前面没有'-'时,将默认使用升序排列。使用'?'将会随机排列
ordering=['order_date'] # 按订单升序排列
ordering=['-order_date'] # 按订单降序排列,-表示降序
ordering=['?order_date'] # 随机排序,?表示随机
ordering=['-pub_date','author'] # 以pub_date为降序,在以author升序排列
9.permissions
permissions主要是为了在Django Admin管理模块下使用的,如果你设置了这个属性可以让指定的方法权限描述更清晰可读。Django自动为每个设置了admin的对象创建添加,删除和修改的权限。
permissions = (('can_deliver_pizzas','Can deliver pizzas'))
10.proxy
这是为了实现代理模型使用的,如果proxy = True,表示model是其父的代理 model
11.unique_together
unique_together这个选项用于:当你需要通过两个字段保持唯一性时使用。比如假设你希望,一个Person的FirstName和LastName两者的组合必须是唯一的,那么需要这样设置:
unique_together = (("first_name", "last_name"),)
一个ManyToManyField不能包含在unique_together中。如果你需要验证关联到ManyToManyField字段的唯一验证,尝试使用signal(信号)或者明确指定through属性。
12.verbose_name
verbose_name的意思很简单,就是给你的模型类起一个更可读的名字一般定义为中文,我们:
verbose_name = "学校"
13.verbose_name_plural
这个选项是指定,模型的复数形式是什么,比如:
verbose_name_plural = "学校"
如果不指定Django会自动在模型名称后加一个’s’
Django-models的字段类型的更多相关文章
- Django models 的字段类型
1.models.AutoField ---自增列 = int(11) 如果没有的话,默认会生成一个名称为 id 的列,如果要显示的自定义一个自增列,必须将给列设置为主键 primary_k ...
- Django models 常用字段类型
1.CharField字符串字段,存较短的字符串,长文本要用TextField.必须的参数:max_length 字符的最大长度2.TextField容量很大的文本字段.admin中用 <tex ...
- django:field字段类型
字段类型(Field types) AutoField 它是一个根据 ID 自增长的 IntegerField 字段.通常,你不必直接使用该字段.如果你没在别的字段上指定主 键,Django 就会自动 ...
- django model常用字段类型
摘自 http://www.cnblogs.com/wt869054461/p/4014271.html V=models.AutoField(**options) #int:在Django代码内是自 ...
- django中的字段类型
from http://www.cnblogs.com/lhj588/archive/2012/05/24/2516040.html Django 通过 models 实现数据库的创建.修改.删除等操 ...
- Django数据模型——数据库字段类型
字段 一个模型最重要也是唯一必需的部分,是它定义的数据库字段 字段名称限制 1.字段名不能是python保留字,这样会导致python语法错误 2.字段不能包含连续一个以上的下划线,这样会和Djang ...
- django models中字段
AutoField:一个自动递增的整型字段,添加记录时它会自动增长.你通常不需要直接使用这个字段:如果你不指定主键的话,系统会自动添加一个主键字段到你的model.(参阅自动主键字段) Boolean ...
- Django 模型中字段类型的ImageField
model_pic = models.ImageField(upload_to = 'pic_folder/', default = 'pic_folder/None/no-img.jpg') 参数u ...
- Django模型类之models字段类型和参数以及元数据meta
models之字段类型和参数 示例: # class Test(models.Model): # courses_test # """测试学习用""& ...
- django中模型详解-字段类型与约束条件
这片博文来详细说明django模型的使用,涉及到django模型的创建,字段介绍,以及django模型的crud操作,以及一对一等操作. 在使用模型之前,我们首先设置数据库选项,django的默认数据 ...
随机推荐
- :first :first-child .first()和.get() .eq()
:first .first()只匹配一个元素,而 :first-child 将为每个父元素匹配一个子元素 .get()得到的是dom 元素 $('li').get()没有参数返回一个数组 .eq() ...
- Electron-vue 新建Demo
vue init simulatedgreg/electron-vue Test(项目名)
- petalinux--执行子进程“oe-gnome-terminal-phonehome”失败(没有那个文件或目录)(转)
简介 使用petalinux配置kernel时候提示 “Failed to execute child process “oe-gnome-terminal-phonehome” (No such f ...
- mybatis异常:Caused by: java.lang.IllegalArgumentException: Result Maps collection already contains value for。。。。。。
框架环境:ssm 昨天下午技术经理更新了下表结构,多加了一个字段. 之后我根据新的mapper.xml文件写了增删改查的操作.重新启动之后不是这个错就是那个错,一大堆错误,头疼. 像类似于NoSuch ...
- Eclipse各个版本及其对应代号、下载地址列表
版本号 代码 日期 下载地址 Eclipse 3.1 IO[木卫一,伊奥] 2005 http://archive.eclipse.org/eclipse/downloads/drops/R-3.1- ...
- Ubuntu 14.04 正式版 12.4
安装Ubuntu 14.04后要做的5件事情 4月17日,开源免费系统Ubuntu官方正式宣布发布Ubuntu 14.04 LTS(代号Trusty Tahr)正式版.官方声称该版本主打云计算,在云平 ...
- JS 动态加载脚本的4种方法
有时候我们需要动态的加入适合的js,因为有时候不需要将所有的js都加载进来,以来提高效率,但这种方法比较适合单个js文件比较大的情况 如果js文件都比较小,还是一个js好,这样可以减少连接数.下面是4 ...
- linux的系统组成和计算机组成原理,linux常用操作
Linux入门 linux简介 学习目的:linux服务器操作系统稳定长期运行,python,pycharm装于linux上 linux系统组成 应用软件:调用系统软件接口 linux操作系统分两 ...
- how to install an older version of package via NuGet?
转载 http://stackoverflow.com/questions/10206090/how-to-install-an-older-version-of-package-via-nuget ...
- VS2010 如何自动生成UML图
项目名---右键----查看类图