Django模型的Field Types
Field Types
常用参数:
null
如果设置为 True , Django 存放一个 NULL 到数据库字段。默认为 False。
allow_null
如果设置为 True , 该字段将接受None可为空的关系的值或空字符串。默认为 False。
blank
如果设置为 True空字符串应被视为有效值,如果设置为False那么空字符串被认为是无效的并会引发验证错误,默认为 False。
allow_blank
如果设置为 True , 此 field 允许为 blank (空白),默认为 False。
choices
一个2元元组的元组或者列表,如果执行 choices , Django 的 admin 就会使用 选择框而不是标准的 text 框填写这个 field。
YEAR_IN_SCHOOL_CHOICES = ( (u'FR', u'Freshman'), (u'SO', u'Sophomore'), (u'JR', u'Junior'), (u'SR', u'Senior'), (u'GR', u'Graduate'), ) |
2元元组的第一个元素是要存入 database 的数据,第二个元素是 admin 的界面 显示的数据。
使用了 choices 参数的 field 在其 model 示例里,可以用 "get_field的名 字_display" 方法 显示 choices 的显示字串(就是2元元组的第二个数据)。示 例:
from django.db import models class Person(models.Model): GENDER_CHOICES = ( (u'M', u'Male'), (u'F', u'Female'), ) name = models.CharField(max_length=60) gender = models.CharField(max_length=2, choices=GENDER_CHOICES) |
>>> p = Person(name="Fred Flinstone", gender="M") >>> p.save() >>> p.gender u'M' >>> p.get_gender_display() u'Male' |
default
field 的默认值,可以使用可调用对象(a callable object),如果使用可调用 对象,那么每次创建此 model 的新对象时调用可调用对象。常见如 datatime 。
help_text
help_text 的值可以在 admin form 里显示,不过即使不使用 admin ,也可以当 做描述文档使用。
primary_key
如果为 True , 这个 field 就是此 model 的 primary key 。
unique
如果为 True, 此 field 在这个 table 里必须唯一。
verbose_name
verbose,详细的意思。verbose_name,就可以理解为详细的名字吧。
除了ForeignKey, ManyToManyField 和 OneToOneField之外,每个类型的字段都有一个可选的第一位置参数-详细的名字。如果没有给出详细的名称,Django将自动使用字段的属性名来代替他。替代过程中会转换下划线为空格。
该字段中,名字的详情为”person’s first name”:
first_name = models.CharField("person's first name", max_length=30) |
以下字段中,first_name的详细名字为"first name":
first_name = models.CharField(max_length=30) |
ForeignKey, ManyToManyField 和 OneToOneField要求第一个参数是模型的类,所以需要使用verbose_name关键字参数,如:
poll = models.ForeignKey(Poll, verbose_name="the related poll") sites = models.ManyToManyField(Site, verbose_name="list of sites") place = models.OneToOneField(Place, verbose_name="related place") |
在需要的时候Django会自动大写 verbose_name的首字母。
原来verbose_name字段就是为ForeignKey, ManyToManyField 和 OneToOneField这三种关系准备的啊!
常见Filed Types
1、AutoField
如果没有指明主键,就会产生一个自增的主键。
2、BigIntegerField
64位的整型数值,从 -2^63 (-9223372036854775808) 到 2^63-1(9223372036854775807)。
3、BinaryField
存储原始二进制数据,仅支持字节分配。功能有限。
4、BooleanField
布尔型和NullBooleanField有区别,true/false,本类型不允许出现null。
5、CharField
字符串,一般都在创建时写入max_length参数。
6、CommaSeparatedIntegerField
逗号分隔的整数,考虑到数据库的移植性,max_length参数应该必选。
原文解释:A field of integers separated by commas. As in CharField, the max_length argument is required and the note about database portability mentioned there should be heeded.
7、DateField
时间,对应Python的datetime.date,额外的参数:DateField.auto_now表示是否每次修改时改变时间,DateField.auto_now_add 表示是否创建时表示时间,一般来说数据库重要的表都要有这样的字段记录创建字段时间个最后一次改变的时间。关于时间的话,建议timestamp,当然 python的话还是DateTime吧。
8、DateTimeField
对应Python的datetime.datetime,参照参数(7)。
9、DecimalField
固定精度的十进制数,一般用来存金额相关的数据。对应python的Decimal,额外的参数包括DecimalField.max_digits和DecimalField.decimal_places ,这个还是要参照一下mysql的Decimal类型,http://database.51cto.com/art/201005/201651.htm
例如:price = models.DecimalField(max_digits=8,decimal_places=2)
10、EmailField
字符串,会检查是否是合法的email地址
11、FileField
class FileField([upload_to=None, max_length=100, **options])
存文件的,参数upload_to在1.7之前的一些老版本中必选的
12、FloatField
浮点数,必填参数:max_digits,数字长度;decimal_places,有效位数。
13、ImageField
class ImageField([upload_to=None, height_field=None, width_field=None, max_length=100, **options])
图片文件类型,继承了FileField的所有属性和方法。参数除upload_to外,还有height_field,width_field等属性。
14、IntegerField
[-2147483648,2147483647 ]的取值范围对Django所支持的数据库都是安全的。
15、IPAddressField
点分十进制表示的IP地址,如10.0.0.1
16、GenericIPAddressField
ip v4和ip v6地址表示,ipv6遵循RFC 4291section 2.2,
17、NullBooleanField
可以包含空值的布尔类型,相当于设置了null=True的BooleanField。
18、PositiveIntegerField
正整数或0类型,取值范围为[0 ,2147483647]
19、PositiveSmallIntegerField
正短整数或0类型,类似于PositiveIntegerField,取值范围依赖于数据库特性,[0 ,32767]的取值范围对Django所支持的数据库都是安全的。
20、SlugField
只能包含字母,数字,下划线和连字符的字符串,通常被用于URLs表示。可选参数max_length=50,prepopulate_from用于指示在admin表单中的可选值。db_index,默认为True。
21、SmallIntegerField
小整数字段,类似于IntegerField,取值范围依赖于数据库特性,[-32768 ,32767]的取值范围对Django所支持的数据库都是安全的。
22、TextField
文本类型
23、TimeField
时间,对应Python的datetime.time
24、URLField
存储URL的字符串,默认长度200;verify_exists(True),检查URL可用性。
25、FilePathField
class FilePathField(path=None[, match=None, recursive=False, max_length=100, **options])
类似于CharField,但是取值被限制为指定路径内的文件名,path参数是必选的。
Django模型的Field Types的更多相关文章
- Django模型的Field Types总结
转:http://blog.csdn.net/devil_2009/article/details/41735611 Field Types 常用参数: null 如果设置为 True , Djang ...
- django字段类型(Field types)介绍
字段类型(Field types) AutoField 它是一个根据 ID 自增长的 IntegerField 字段.通常,你不必直接使用该字段.如果你没在别的字段上指定主 键,Django 就会自动 ...
- Django模型model Field详解:
类型说明 AutoField一个自动增加的整数类型字段.通常你不需要自己编写它,Django会自动帮你添加字段:id = models.AutoField(primary_key=True),这是一个 ...
- Django文档——Model字段类型(Field Types)
大部分内容参考自http://wrongwaycn.github.io/django11/topics/db/models/index.html#topics-db-models ,内容是django ...
- 一 Django模型层简介(一)
模型 django提供了一个强大的orm(关系映射模型)系统. 模型包含了你要在数据库中创建的字段信息及对数据表的一些操作 使用模型 定义好模型后,要告诉django使用这些模型,你要做的就是在配置文 ...
- 八.django模型系统(二)之常用查询及表关系的实现
Ⅰ.常用查询 1.几个概念 每一个django模型类,都有一个默认的管理器,objects,查询就是依赖于objects管理器进行的(在创建时就被添加了). QuerySet表示数据库中对象的列表( ...
- django 模型models
1. django 模型models 常用字段 1.models.AutoField 自增列 = int(11) 如果没有的话,默认会生成一个名称为 id 的列 如果要显式的自定义一 ...
- 六、Django模型基础第一节
1 数据库的连接配置 django 连接mysql的配置流程: 安装 pymysql pip install pymysql 创建数据库用户 '; grant all on *.* to 'xiang ...
- django模型二
django模型二 常用模型字段类型 IntegerField → int CharField → varchar TextField → longtext DateFiel ...
随机推荐
- 咕qwq
ccsp回来之后一直肚子难受,到现在还没好. 下午去人民医院急诊做了个CT,医生说是有问题的,但她看不出来,让我明天早起挂专家号去QAQ. UPD:初步诊断是胀气.医生让我先吃两天抗生素...
- mysql在某一字段后面添加新字段
mysql在某一字段后面添加新字段 ALTER TABLE `test` ADD `anyField` TEXT NOT NULL AFTER `id`
- java String练习
package com.oracle.demo01; public class WorkNext { public static void main(String[] args) { //题目一:获取 ...
- 关于Mongodb的Cap理论的思考(转载)
大约在五六年前,第一次接触到了当时已经是hot topic的NoSql.不过那个时候学的用的都是mysql,Nosql对于我而言还是新事物,并没有真正使用,只是不明觉厉.但是印象深刻的是这么一张图片( ...
- js 中dindexof()用法
https://www.cnblogs.com/jiadi321/p/10174317.html http://www.w3school.com.cn/jsref/jsref_splice.asp
- H5实现手写功能
html <!DOCTYPE html> <html lang="en"> <head> <meta charset="utf- ...
- CF G. Indie Album AC自动机+fail树+线段树
这个套路挺有意思的. 把 $trie$ 和 $fail$ 树都建出来,然后一起跑一跑就好了~ #include <queue> #include <cstdio> #inclu ...
- 静态库lib、动态库dll基础
首先从hello world!开始 //main.cpp文件 void cpu(); int main() { put(); ; } 在main.cpp中定义了一个cpu():函数,但没有实现其功能, ...
- D. Marcin and Training Camp
D. Marcin and Training Camp 题目链接:http://codeforces.com/contest/1230/problem/D time limit per test: 3 ...
- [JZOJ6400]:Game(贪心+线段树+二分)
题目描述 小$A$和小$B$在玩一个游戏,他们两个人每人有$n$张牌,每张牌有一个点数,并且在接下来的$n$个回合中每回合他们两人会分别打出手中的一张牌,点数严格更高的一方得一分,然而现在小$A$通过 ...