ORM回顾
ORM(Object-Relation Mapping),对象-关系映射,对于开发人员主要带来了如下好处:
实现了数据模型与数据库的解耦,通过简单的配置就可以轻松更换数据库,而不需要修改代码。
只需要面向对象编程,不需要面向数据库编写代码。
在MVT中Model中定义的类,通过ORM与关系型数据库中的表对应,对象的属性体现对象间的关系,这种关系也被映射到数据表中。
Django框架中ORM示意图如下:
模型创建步骤回顾
在models.py中定义模型类
生成迁移文件
执行迁移
定义属性
语法格式:属性 = models.字段类型(选项)
属性命名限制:
不能是python的保留关键字
不允许使用连续的下划线
定义属性时需要指定字段类型,通过字段类型的参数指定选项
说明:
Django会为表创建自动增长的主键列,每个模型类只能有一个主键列
如果在数据库中设置了主键,Django将不会创建主键列
默认创建的主键列属性为id,可以使用pk代替,pk表示primary key。
pk是主键的别名,若主键名为id2,那么pk是id2的别名。
字段类型
使用时需要引入django.db.models包,字段类型如下:
选项
通过选项设置字段的约束,选项如下:
实例演练
在SQLyog中新建数据库 test2
修改models.py中的模型类,编码如下:
from django.db import models
# 定义图书模型类BookInfo
class BookInfo(models.Model):
# 指定btitle对应的字段名为title
btitle = models.CharField(max_length=20, db_column='title')
bpub_date = models.DateField() # 发布日期
bread = models.IntegerField(default=0) # 阅读量
bcomment = models.IntegerField(default=0) # 评论量
isDelete = models.BooleanField(default=False) # 逻辑删除
# 定义人物模型类PersonInfo
class PersonInfo(models.Model):
pname = models.CharField(max_length=20) # 人物姓名
pgender = models.BooleanField(default=True) # 人物性别
isDelete = models.BooleanField(default=False) # 逻辑删除
# 人物描述,数据库中的字段可以为空,但后台管理页面的输入框不能为空
pcomment = models.CharField(max_length=200, null=True, blank=False)
生成迁移文件并执行,查看test2数据库中的内容