0x02 -- Django -- 模型介绍 -- 2 -- 字段类型

0x00 – 什么是 Field

请添加图片描述

field 翻译为【字段】或许最为合适吧,谁知道呢?

Field 是一个抽象的类,表示一个数据库表的列。


0x01 – 字段功能

模型中每一个字段都应该是某个 Field 类的实例, Django 利用这些字段类来实现以下功能:

  1. 字段类型用以指定数据库数据类型(如:INTEGER, VARCHAR, TEXT)。
  2. 在渲染表单字段时默认使用的 HTML 视图 (如: <input type="text">, <select>)。
  3. 基本的有效性验证功能,用于 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 支持的所有数据库中都是安全的。文档链接
GenericIPAddressFieldIPv4 或 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 支持的所有数据库中都是安全的。
SlugFieldSlug 是一个报纸术语。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日

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值