学习笔记,仅供参考,有错必纠
参考自:django 官方文档;Django 1.11.6 中文;django models 之字段详解
models字段
models的字段类型
字段类型 | 意义 | 阐述 |
---|---|---|
models.AutoField | 自增列 int(11) | 如果没有的话,默认会生成一个名称为 id 的列,如果要显示的自定义一个自增列,必须将给列设置为主键 primary_key=True。 |
models.CharField | 字符串字段 | 必须使用max_length参数,django会根据这个参数在数据库层和校验层限制该字段所允许的最大字符数。只可用于较短的字符串,如要保存大量文本, 可使用 TextField。 |
models.BooleanField | 布尔类型tinyint(1) | 该字段不能为空,也就是说他的Blank=True |
models.ComaSeparatedIntegerField | 用逗号分割的数字 | 继承CharField,所以必须有max_lenght 参数 |
models.DateField | 日期类型date | 如果参数auto_now = True,则每次更新都会更新这个时间;如果设置auto_now_add = True,则只是第一次创建添加,之后的更新不再改变。 |
models.DateTimeField | 日期类型 datetime | 和DateField的参数相同 |
models.DecimalField | 十进制小数类型decimal | 必须指定整数位max_digits和小数位decimal_places |
models.EmailField | 正则表达式邮箱varchar | 对字符串进行正则表达式匹配,匹配一个带有检查Email合法性的 CharField,不接受maxlength 参数。 |
models.FloatField | 浮点类型 double | 浮点型字段 |
models.IntegerField | 整形 | 用于保存一个整数 |
models.BigIntegerField | 长整形 | - |
models.IPAddressField | ip4正则表达式 | 一个字符串形式的 IP 地址, 如 202.1241.30 |
models.GenericIPAddressField | ip4和ip6为可选项 | 参数protocol可以为:both、ipv4、ipv6 |
models.NullBooleanField | 允许为空的布尔类型 | 类似于BooleanField, 不过允许 NULL 作为其中一个选项。 推荐使用这个字段而不要用 BooleanField 加 null=True 选项。 |
models.PositiveIntegerField | 正Integer | 类似于IntegerField, 但取值范围为非负整数 |
models.PositiveSmallIntegerField | 正smallInteger | 正小整型字段 |
models.SmallIntegerField | 数字 | 类似于 IntegerField, 不过只允许某个取值范围内的整数。(依赖数据库) |
models.TextField | 字符串longtext | 一个容量很大的文本字段 |
models.TimeField | 时间 HH:MM[:ss[.uuuuuu]] | 时间字段 |
models.URLField | 地址正则表达式 | 用于保存URL,若参数verify_exists=True (默认), 会预先检查URL是否存在(即URL是否被有效装入且没有返回404响应). |
models.BinaryField | 二进制 | |
models.ImageField | 图片 | 该字段要求 Python Imaging 库。 |
models.FilePathField | 选择指定目录按限制规则选择文件 | |
models.PhoneNumberField | 一个带有合法美国风格电话号码校验的 CharField | 格式:XXX-XXX-XXXX |
models.FileField | 文件上传字段 | |
models.USStateField | 美国州名缩写 | 由两个字母组成 |
models.XMLField | XML字符字段 | - |
字段选项
以下参数对所有字段类型均有效,且是可选的。
参数 | 意义 |
---|---|
null | 如果设置为 True , 当该字段为空时,Django 会将数据库中该字段设置为 NULL ,默认为 False 。 |
blank | 如果设置为 True ,该字段允许为空。默认为 False 。 |
choices | 一个可迭代的(例如,一个列表或元组),它本身就包含两个项目的可迭代项(例如[(A, B), (A, B) ...] )作为该字段的选项。第一个值是实际存储的值,第二个用来方便进行选择,如SEX_CHOICES= ((‘F’,'Female’),(‘M’,'Male’),) |
default | 字段的默认值。 这可以是一个值或一个可调用的对象。 如果可调用,则每次创建新对象时都会调用它。 |
editable | 如果False ,该字段将不会显示在管理员或任何其他ModelForm 中。 |
help_text | admin模式下的帮助文档 |
primary_key | 如果True ,则该字段是模型的主键;如果没有设置,django创建表时会自动加上 |
error_messages | 使用error_messages 参数可以覆盖该字段将引发的默认消息。 传入一个字典,其中包含与要覆盖的错误消息相匹配的密钥。 |
unique | 如果True ,则该字段在整个表格中必须是唯一的。 |
unique_for_date | 要求此字段对于日期字段的值是唯一的。 |
unique_for_month | 与unique_for_date 类似,但要求该字段相对于月份而言是唯一的。 |
db_index | 如果设置为True, 表示为该列增加索引 |
db_column | 指定列的名称,如果不指定的话则采用变量名作为列名 |