Django教程-Django模型
Django教程-Django模型
gh_1d7504e4dee1
回复:python,领取Python面试题。分享Python教程,Python架构师教程,Python爬虫,Python编程视频,Python脚本,Pycharm教程,Python微服务架构,Python分布式架构,Pycharm注册码。
在 Django 中,模型是一个类,用于包含基本字段和方法。每个模型类映射到数据库中的单个表。
Django Model 是django.db.models.Model 的子类 ,模型类的每个字段代表一个数据库字段(列)。
Django 为我们提供了一个数据库抽象 API,它允许我们从映射表中创建、检索、更新和删除记录。
模型在Models.py文件中定义。 该文件可以包含多个模型。
点击领取Python面试题手册
Python从入门到进阶知识手册
from
django.db
import
models
class
Employee
(models.Model)
:
first_name = models.CharField(max_length=
30
)
last_name = models.CharField(max_length=
30
)
该模型将在数据库中创建一个表,如下所示。
CREATE
TABLE
appname_employee (
"id"
INT
NOT
NULL
PRIMARY
KEY
,
"first_name"
varchar
(
30
)
NOT
NULL
,
"last_name"
varchar
(
30
)
NOT
NULL
);
注册/使用模型
创建模型后,将模型注册到settings.py内的 INSTALLED_APPS 中。
例如
INSTALLED_APPS = [
#...
’appname’,
#...
]
Django 模型字段
Model 类中定义的字段是映射表的列名。字段名称不应该是 python 保留字,例如 clean、save 或 delete 等。
Django 提供了各种内置字段类型。
| Field Name | Class | Particular |
|---|---|---|
| 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) | 真/假字段。该字段的默认表单小部件是 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) | 一个大的文本字段。该字段的默认表单小部件是文本区域。 |
| TimeField | class TimeField(auto_now=False, auto_now_add=False, **options) | 时间,在 Python 中由 datetime.time 实例表示。 |
Django 模型字段示例
# for creating varchar column
first_name
= models.CharField(max_length=
50
)
# for creating date column
release_date
= models.DateField()
# for creating integer column
num_stars
= models.IntegerField()
字段选项
每个字段都需要一些用于设置列属性的参数。例如,CharField 需要 mac_length 来指定 varchar 数据库。
适用于所有字段类型的通用参数。全部都是可选的。
| Field Options | Particulars |
|---|---|
| Null | Django 将在数据库中将空值存储为 NULL。 |
| Blank | 它用于允许字段为空白。 |
| Choices | 用作该字段的选择的可迭代(例如,列表或元组)的二元组。 |
| Default | 该字段的默认值。这可以是一个值或一个可调用对象。 |
| help_text | 与表单小部件一起显示的额外“帮助”文本。即使您的字段未在表单上使用,它对于文档也很有用。 |
| primary_key | 该字段是模型的主键。 |
| Unique | 该字段在整个表中必须是唯一的。 |
Django 模型示例
我们创建了一个模型 Student,其中在models.py文件中包含以下代码。
//模型.py
class
Student(models.Model):
first_name
=
models.CharField(max_length=20)
last_name
=
models.CharField(max_length=30)
contact
=
models.IntegerField()
email
=
models.EmailField(max_length=50)
age
=
models.IntegerField()
python3
manage
.py
makemigrations
myapp
-
禁止乱用:一款牛批的开源去马赛克工具。。。
-
AI绘画-野性驯心:她与百兽共舞的非凡旅程
-
Django教程-MVT(模型视图模板)
-
2023年血糖新标准公布,不是3.9-6.1,快来看看你的血糖正常吗? 2023-02-07
-
2023年各省最新电价一览!8省中午执行谷段电价! 2023-01-03
-
GB 55009-2021《燃气工程项目规范》(含条文说明),2022年1月1日起实施 2021-11-07
-
PPT导出高分辨率图片的四种方法 2022-09-22
-
2023年最新!国家电网27家省级电力公司负责人大盘点 2023-03-14
-
全国消防救援总队主官及简历(2023.2) 2023-02-10
-
盘点 l 中国石油大庆油田现任领导班子 2023-02-28
-
我们的前辈!历届全国工程勘察设计大师完整名单! 2022-11-18
-
关于某送变电公司“4·22”人身死亡事故的快报 2022-04-26
