Django 模型2024 年 8 月 29 日 | 4 分钟阅读 在 Django 中,模型是一个类,用于包含必要的字段和方法。每个模型类都映射到数据库中的单个表。 Django 模型是 django.db.models.Model 的子类,模型类的每个字段代表一个数据库字段(列)。 Django 为我们提供了一个数据库抽象 API,允许我们从映射的表中创建、检索、更新和删除记录。 模型在 Models.py 文件中定义。此文件可以包含多个模型。 让我们看一个例子,我们创建一个名为 Employee 的模型,它有两个字段 first_name 和 last_name。 first_name 和 last_name 字段被指定为类属性,每个属性都映射到数据库中的一列。 此模型将在数据库中创建一个如下所示的表。 创建的表包含一个自动创建的 id 字段。表的名称是应用程序名称和模型名称的组合,可以进一步更改。 注册/使用模型创建模型后,将模型注册到 settings.py 中的 INSTALLED_APPS 中。 例如: Django 模型字段在 Model 类中定义的字段是映射表的列名。字段名称不应是 python 保留字,例如 clean、save 或 delete 等。 Django 提供了各种内置字段类型。 字段名 | Class | 详细信息 |
---|
AutoField | class AutoField(**options) | 它是一个自动递增的 IntegerField。 | BigAutoField | class BigAutoField(**options) | 它是一个 64 位整数,很像 AutoField,不同之处在于它保证适合 1 到 9223372036854775807 之间的数字。 | BigIntegerField | class BigIntegerField(**options) | 它是一个 64 位整数,很像 IntegerField,不同之处在于它保证适合 -9223372036854775808 到 9223372036854775807 之间的数字。 | BinaryField | class BinaryField(**options) | 一个用于存储原始二进制数据的字段。 | BooleanField | class BooleanField(**options) | 一个 true/false 字段。此字段的默认表单小部件是 CheckboxInput。 | CharField | class DateField(auto_now=False, auto_now_add=False, **options) | 它是一个日期,在 Python 中由 datetime.date 实例表示。 | DateTimeField | class DateTimeField(auto_now=False, auto_now_add=False, **options) | 它是一个日期,在 Python 中由 datetime.date 实例表示。 | DateTimeField | class DateTimeField(auto_now=False, auto_now_add=False, **options) | 它用于日期和时间,在 Python 中由 datetime.datetime 实例表示。 | DecimalField | class DecimalField(max_digits=None, decimal_places=None, **options) | 它是一个固定精度的十进制数,在 Python 中由 Decimal 实例表示。 | DurationField | class DurationField(**options) | 用于存储时间段的字段。 | EmailField | class EmailField(max_length=254, **options) | 它是一个 CharField,用于检查该值是否为有效的电子邮件地址。 | FileField | class FileField(upload_to=None, max_length=100, **options) | 它是一个文件上传字段。 | FloatField | class FloatField(**options) | 它是一个浮点数,在 Python 中由 float 实例表示。 | ImageField | class ImageField(upload_to=None, height_field=None, width_field=None, max_length=100, **options) | 它继承了 FileField 的所有属性和方法,但也验证上传的对象是否为有效的图像。 | IntegerField | class IntegerField(**options) | 它是一个整数域。从 -2147483648 到 2147483647 的值在 Django 支持的所有数据库中都是安全的。 | NullBooleanField | class NullBooleanField(**options) | 与 BooleanField 类似,但允许 NULL 作为选项之一。 | PositiveIntegerField | class PositiveIntegerField(**options) | 与 IntegerField 类似,但必须为正数或零 (0)。从 0 到 2147483647 的值在 Django 支持的所有数据库中都是安全的。 | SmallIntegerField | class SmallIntegerField(**options) | 它类似于 IntegerField,但只允许低于某个(数据库相关的)点的值。 | TextField | class TextField(**options) | 一个大型文本字段。此字段的默认表单小部件是 Textarea。 | TimeField | class TimeField(auto_now=False, auto_now_add=False, **options) | 一个时间,在 Python 中由 datetime.time 实例表示。 |
Django 模型字段示例字段选项每个字段都需要一些参数,这些参数用于设置列属性。例如,CharField 需要 mac_length 来指定 varchar 数据库。 所有字段类型都可用的常用参数。所有参数都是可选的。 字段选项 | 课程详情 |
---|
Null | Django 会将空值存储为数据库中的 NULL。 | Blank | 用于允许字段为空白。 | 选项 | 一个 2 元组的可迭代对象(例如,列表或元组),用作此字段的选择。 | 默认 | 该字段的默认值。这可以是一个值或一个可调用对象。 | help_text | 与表单小部件一起显示的额外“帮助”文本。 即使您的字段未在表单上使用,它也对文档很有用。 | primary_key | 此字段是模型的主键。 | Unique | 此字段在整个表中必须是唯一的。 |
Django 模型示例我们创建了一个 Student 模型,该模型在 models.py 文件中包含以下代码。 //models.py 之后,使用以下命令应用迁移。 它将创建一个表 myapp_student。表结构如下所示。 
|