ad

《Python+3自动化软件发布系统》Django 2实战_了解Python的更好方法_2.8.3 ORM常用 Field 及属性

网友投稿 145 2023-11-07

【摘要】 本书摘自《Python+3自动化软件发布系统》一书中第2章,第8节,由陈刚、王洪军编著。

2.8.3 ORM常用 Field 及属性

在继续进行下一步实践之后,这里先插入一个 ORM 常用的 Field 的知识点,以 便读者更全面地了解 Django ORM 支持的数据类型及常用设置。

《Python+3自动化软件发布系统》Django 2实战_了解Python的更好方法_2.8.3 ORM常用 Field 及属性

ORM 常用字段类型如下:

① CharField: 字符串类型,映射到数据库中会转换成 varchar 类型,使用时必须 传入 max_length 属性以定义该字符串的最大长度;如果超过254个字符,就不建议 使用CharField 了,此时建议使用TextField。

② EmailField: 在数据库底层也是一个 varchar 类型,默认最大长度是254个字 符。当然也可以自己传递 max_length 参数,这个 Field 在数据库层面不会限制一定 要传递符合 email 条件的字符串,只是以后在使用 ModelForm 表单验证时,会起 作用。

③ UrlField: 类似于 CharField, 在数据库底层也是一个 varchar 类型,只不过只 能用来存储 URL 格式的字符串,并且默认的max_length 是200,同 EmailField。

④ FloatField: 浮点数类型,映射到数据库中会变成 double 类型。

⑤ IntegerField: 整数类型,映射到数据库中会变成11位的int 类型。

⑥ BooleanField: 布尔类型(True/False), 映射到数据库中会变成长度只有1位 的 tinyint 类型,这个 Field 不接受 null 参数。要想使用 null 的布尔类型的字段,就 要使用NullBooleanField。

⑦ AutoField: 自增长类型,映射到数据库中是11位的整数,使用此字段时,必 须传递 primary_key=True, 否则在生成迁移脚本文件时,就会报错; 一个模型不能 有两个自增长字段。 一般情况下我们用不到这个字段,如果不定义主键,Django 会 自动为我们生成 id 字段作为主键。

⑧ DateTimeField: 日期时间类型,在 Python 中对应的是 datetime.datetime 类 型,在映射到数据库中也是datetime 类型。使用这个 Field 可以传递以下几个参数:

a.auto_now=True: 在每次这个数据保存的时候,都使用当前的时间。比如作为一个记录修改日期的字段。

b.auto_now_add=True: 在每条数据第一次被添加进去的时候,都使用当前的 时间,比如作为一个记录第一次入库的字段。

⑨ DateField: 日期类型,用法同 DateTimeField, 在 Python 中对应的是 date time.date 类型,在映射到数据库中是 date 类型。

⑩ TimeField: 时间类型,用法同 DateTimeField, 在 Python 中对应的是 datè- time.time 类型,在映射到数据库中是 time 类型。

⑪ FileField: 用来存储文件。

⑫ ImageField: 用来存储图片文件。

⑬ TextField: 大量的文本类型。

Field 的常用参数如下:

① null: 标识是否可以为空,默认是 False 。在使用字符串相关的 Field(CharF- ield/TextField/URLField/EmailField) 的时候,官方推荐尽量不要使用这个参数,也 就是保持默认值 False 。 因为 Django 在处理字符串相关的 Field 时,即使这个 Field 的 null=False, 如果没有给这个 Field 传递任何值,那么 Django 也会使用一个空的 字符串""""来作为默认值存储进去。因此如果再使用null=True,Django 会产生两 种空值的情形(NULL 或者空字符串)。如果想要在表单验证的时候允许这个字符 串为空,那么建议使用blank=True 。 如果你的 Field 是 BooleanField, 由于 Boolean- Field 不接受 null 参数,因此如果想要设置这个字段可以为空的 bool 类型,那么对应 的可空的 bool 类型字段则为NullBooleanField。

② blank: 标识这个字段在表单验证的时候是否可以为空,默认是 False 。这个 和 null 是有区别的,null 是一个纯数据库级别的;而 blank 是表单验证级别的。

③ db_column: 这个字段在数据库中的名字。如果没有设置这个参数,那么将会 使用模型中属性的名字。

④ db_index: 标识这个字段是否为索引字段。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们 18664393530@aliyun.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:《深入理解 Java 虚拟机 JVM 高级特性与最佳实践(第3版)》_求知之路漫漫_3.3.4 标记-整理算法
下一篇:达人之路·《高效办公应用宝典公式·函数与VBA》_6.3.6 DMAX函数根据条件求指定列中的最大值
相关文章

 发表评论

暂时没有评论,来抢沙发吧~

×