在前边的博客里已经介绍了如何使用Models,以及如何使用第三方数据库,
但例子中生成的数据表只有一种类型,但在面对多种类型的数据时又该怎么存储呢?
其实方法很简单,在我们继承的 models.Model 已经声明好了对应类,不同类对应数据库中不同属性。
下面介绍一些常用属性的对应类:
一 索引,字符,数字
1、models.AutoField
自增列 如果没有,默认会生成一个名称为 id 的列,
如果要显示的自定义一个自增列,必须将给列设置为主键 primary_key=True。
2、models.BigAutoField
自增列 当数据过多时可用 BigAutoField 代替 AutoField
3、models.CharField
字符串字段 单行输入,用于较短的字符串,如要保存大量文本, 使用 TextField。
必须 max_length 参数,django会根据这个参数在数据库层和校验层限制该字段所允许的最大字符数。
4、models.TextField
字符串 ,一个容量很大的文本字段
5、models.IntegerField
整形 用于保存一个整数
6、models.SmallIntegerField
类似 IntegerField, 不过只允许某个取值范围内的整数。(依赖数据库)
7、models.BigIntegerField
长整形
8、models.PositiveIntegerField
类似 IntegerField, 但取值范围为非负整数(允许0值,可以理解为无符号整数)
9、models.PositiveSmallIntegerField
正smallInteger 正小整型字段,类似 PositiveIntegerField, 取值范围较小(数据库相关)
10、models.FloatField
浮点类型 = double 浮点型字段。 必须提供两个 参数:
max_digits:总位数(不包括小数点和符号)
decimal_places:小数位数。
二 日期时间,文件
1、models.DateField
日期类型 YYYY-MM-DD 参数:
auto_now = True 则每次更新都会更新这个时间;
auto_now_add =True 则只是第一次创建添加,之后的更新不再改变。
2、models.DateTimeField
日期类型 YYYY-MM-DD hh:mm:ss 同DateField的参数
3、models.TimeField
日期类型 hh:mm:ss 同DateField的参数
注意:具体的文件上传会在之后的篇幅展开说明
4、models.FileField
文件上传字段。 一个必须参数:
upload_to : 一个用于保存上传文件的本地文件系统路径。
由于性能需求文件不会被直接存储到数据库中
非必需参数 storage 用来设定文件存储仓库
5、models.FilePathField
选择指定目录按限制规则选择文件,有三个参数
path:必需参数,一个目录的绝对文件系统路径。 FilePathField 据此得到可选项目。
match:可选参数, 一个正则表达式, 作为一个字符串, FilePathField 将使用它过滤文件名。
注意:这个正则表达式只会应用到 base filename 而不是路径全名。
recursive:可选参数, 是否包括 path 下全部子目录,True 或 False,默认值为 False。
6、models.ImageField
图像文件上传字段,继承了models.FileField,可以通过 upload_to 指定上传路径
height_field,width_field 如果提供这两个参数,则图片将按提供的高度和宽度规格保存。
三 布尔,其他特殊类型
1、models.BooleanField 布尔类型=tinyint(1) 不能为空,Blank=True
2、models.NullBooleanField:类似 BooleanField, 不过允许 NULL 作为其中一个选项。
3、models.IPAddressField 字符串类型(ip4正则表达式) 一个字符串形式的 IP 地址
4、models.PhoneNumberField 一个带有合法美国风格电话号码校验的 CharField(格式:XXX-XXX-XXXX)
5、models.URLField 字符串,地址正则表达式 用于保存URL。若 verify_exists 参数为 True (默认),
给定的 URL 会预先检查是否存在(即URL是否被有效装入且没有返回404响应)
6、models.SlugField 减号、下划线、字母、数字 它们通常用于URLs。
7、models.XMLField
XML字符字段,校验值是否为合法XML的 TextField,必须提供参数:
schema_path:校验文本的 RelaxNG schema 的文件系统路径。
8、models.BinaryField ---二进制