0x00 – 什么是 Field
field 翻译为【字段】或许最为合适吧,谁知道呢?
Field 是一个抽象的类,表示一个数据库表的列。
0x01 – 字段功能
模型中每一个字段都应该是某个 Field 类的实例, Django 利用这些字段类来实现以下功能:
- 字段类型用以指定数据库数据类型(如:INTEGER, VARCHAR, TEXT)。
- 在渲染表单字段时默认使用的 HTML 视图 (如:
<input type="text">, <select>
)。 - 基本的有效性验证功能,用于 Django 后台和自动生成的表单。
Django 内置了数十种字段类型——模型字段参考链接
如果 Django 内置类型不能满足需求,可以自定义字段类型——编写自定义模型字段(model fields)链接
0x02 – Django 内置字段
字段名称 | 意义 |
---|---|
AutoField | 一个 IntegerField,根据可用的 ID 自动递增。 通常不需要直接使用它;默认主键字段会自动添加到你的模型中。 |
SmallAutoField | 类似 AutoField,但只允许值在一定(依赖于数据库)的限制下。1 到 32767 的值在 Django 支持的所有数据库中都是安全的。 |
BigAutoField | 一个 64 位整数,类似 AutoField,但保证适合 1 到 9223372036854775807 的数字。 |
BigIntegerField | 一个 64 位的整数,和 IntegerField 很像, 只是它保证适合从 -9223372036854775808 到 9223372036854775807 的数字。 |
BinaryField | 一个用于存储原始二进制数据的字段。文档链接 |
BooleanField | 一个 true/false 字段。文档链接 |
CharField | ❗️一个字符串字段,适用于小到大的字符串。文档链接 |
DateField | ❗️一个日期,在 Python 中用一个 datetime.date 实例表示。 有一些额外的、可选的参数。文档链接 |
DateTimeField | 一个日期和时间,在 Python 中用一个 datetime.datetime 实例表示。 与 DateField 一样,使用相同的额外参数。文档链接 |
DecimalField | 一个固定精度的十进制数,在 Python 中用一个 Decimal 实例来表示。文档链接 |
DurationField | 一个用于存储时间段的字段——在 Python 中用 timedelta 建模。文档链接 |
EmailField | 一个 CharField,使用 EmailValidator 来检查该值是否为有效的电子邮件地址。 |
FileField | ❗️一个文件上传字段文档链接 有机会单独讨论 |
FilePathField | 一个 CharField,其选择仅限于文件系统中某个目录下的文件名。文档链接 有一些特殊的参数,其中第一个参数 path 是必须的(一个目录的绝对路径)。 |
FloatField | 在 Python 中用一个 float 实例表示的浮点数。文档链接 |
ImageField | ❗️一个图像上传字段。继承 FileField 的所有属性和方法,但也验证上传的对象是有效的图像。文档链接 除了 FileField 的特殊属性外, ImageField 也有 height 和 width 属性(可选)。 |
IntegerField | ❗️一个整数。从 -2147483648 到 2147483647 的值在 Django 支持的所有数据库中都是安全的。文档链接 |
GenericIPAddressField | IPv4 或 IPv6 地址,字符串格式(如 192.0.2.30 或 2a02:42fe::4 )。该字段的默认表单部件是一个 TextInput。文档链接 |
JSONField | ❗️一个用于存储 JSON 编码数据的字段。在 Python 中,数据以其 Python 本地格式表示:字典、列表、字符串、数字、布尔值和 None。 |
PositiveBigIntegerField | 就像一个 PositiveIntegerField,但只允许在某一特定点下的值(依赖于数据库)。0 到 9223372036854775807 的值在 Django 支持的所有数据库中都是安全的。 |
PositiveIntegerField | 就像 IntegerField 一样,但必须是正值或零( 0 )。从0 到 2147483647 的值在 Django 支持的所有数据库中都是安全的。出于向后兼容的原因,接受 0 的值。 |
PositiveSmallIntegerField | 就像一个 PositiveIntegerField,但只允许在某一特定(数据库依赖的)点下取值。0 到 32767 的值在 Django 支持的所有数据库中都是安全的。 |
SlugField | Slug 是一个报纸术语。slug 是一个简短的标签,只包含字母、数字、下划线或连字符。它们一般用于 URL 中。 |
SmallIntegerField | 就像一个 IntegerField,但只允许在某一特定(依赖于数据库的)点下取值。从 -32768 到 32767 的值在 Django 支持的所有数据库中都是安全的。 |
TextField | ❗️一个大的文本字段。该字段的默认表单部件是一个 Textarea。文档链接 |
TimeField | ❗️一个时间,在 Python 中用 datetime.time 实例表示。接受与 DateField 相同的自动填充选项。 该字段默认的表单部件t是一个 TimeInput。管理中添加了一些 JavaScript 快捷方式。 |
URLField | ❗️URL 的 CharField,由 URLValidator 验证。 该字段的默认表单部件是一个 URLInput。 像所有的 CharField 子类一样, 它接受可选的 max_length 参数,默认值 200。 |
UUIDField | ❗️一个用于存储通用唯一标识符的字段。使用 Python 的 UUID 类。文档链接 |
2021年9月17日