通过上面的学习,我们知道了Django项目中每一个模型类对应为数据库中的一张表,类中没一个属性对应为表中的每一个字段。数据库的只是告诉我们数据库在创建表字段时是需要制定表字段的数据类型的,那我们Django可以帮我实现字段数据类型的限制吗?
答案是YES!!!
我们就通过这一篇文章来了解一下模型类中字段的类型和选项
一、字段类型
Django中通过特定的类,来实现数据库中字段数据类型的效果,下面我们看看都有哪些类,以及他们实现哪种类型
字段类 | 描述 |
AutoField | 自动增长的IntegerField,通常不用指定,不指定时Django会自动创建属性名为id的自动增长属性 |
BooleanField | 布尔字段,值为True或False |
NullBooleanField | 支持Null、True、False三种值 |
CharField(max_length=字符长度) | 字符串 |
TextField | 大文本字段,一般超过4000个字符时使用 |
IntegerField | 整数 |
DecimalField(max_digits=None, decimal_places=None) | 十进制浮点数。专门用于记录金额,max_digits表示总长度,decimal_places表示小数部分长度 |
FloatField | 浮点数 |
DateField[auto_now=False, auto_now_add=False]) | 日期 auto_now表示每次保存对象时,自动设置该字段为当前时间,用于"最后一次修改"的时间戳,它总是使用当前日期,默认为false auto_now_add表示当对象第一次被创建时自动设置当前时间,用于创建的时间戳,它总是使用当前日期,默认为false auto_now_add和auto_now是相互排斥的,组合将会发生错误 |
TimeField | 时间,参数同DateField |
DateTimeField | 日期时间,参数同DateField |
FileField | 上传文件字段 |
ImageField | 继承于FileField,对上传的内容进行校验,确保是有效的图片 |
二、选项
选项是用来限定该字段应该有哪些特性,其实有点类似于数据库中的约束,但也仅仅是有点点类似,因为django提供的选项非常之多
选项名 | 描述 |
null | 如果为True,表示允许为空,默认值是False |
blank | 使用bool值True或False,如果设置为True,表示允许为空 请注意,这不同于null。 null纯粹是与数据库有关的,而空白是与验证有关的。 如果字段的空白为True,则表单验证将允许输入一个空值。 如果字段的空白为False,则需要该字段。 |
db_column | 字段的名称,如果未制定,则使用属性的名称 |
db_index | 数据库索引,如果设置为True,将会为该字段创建索引 |
db_tablespace | 如果此字段已建立索引,则用于该字段的索引的数据库表空间的名称。 缺省值是项目的DEFAULT_INDEX_TABLESPACE设置(如果已设置)或模型的db_tablespace(如果有)。 如果后端不支持索引的表空间,则忽略此选项。 |
default | 默认值,可以使一个只或者是一个可调用的对象 |
primary_key | 主键,如果设置为True,该字段将被设置为模型类的主键 |
unique | 如果设置为True,该字段必须在整个表中保持值唯一,类似于唯一约束,除此以外还有(unique_for_date、unique_for_year、unique_for_month) |