
系列文章目录
[Python]目录
视频及资料和课件
链接:https://pan.baidu.com/s/1LCv_qyWslwB-MYw56fjbDg?pwd=1234
提取码:1234
MVT设计模式中的Model,专门负责和数据库进行交互,对应的文件 models.py。
Model中内嵌了ORM框架,不需要直接面向数据库编程。而是定义模型类,通过模型类和对象完成数据库表的增删改查。
ORM框架就是把数据库表的行与相应的对象建立关联,互相转换,使得数据库的操作面向对象。
在ORM框架中,类对应数据表,对象对应数据表中的行,对象的属性对应数据表中对应行的字段。

使用ORM框架操作数据库,可以不用关心底层具体使用的是哪个数据库,只需要关心ORM框架即可。
如果需要使用不同的数据库,我们只需要在Django框架中进行相应的配置,ORM会自动连接对应的数据库,如果需要对数据库进行增删改查,我们也只需要操作ORM即可,ORM会自动生成对应的数据库的sql语言。



定义模型类时,主键会自动生成。
定义模型类,在对应的子应用中的models.py文件中进行定义。

定义的模型类继承自models.Model.
from django.db import models
# Create your models here.
# 模型类:BookInfo
class BookInfo(models.Model):
# 书籍名称字段:name
# 字段的类型为 字符类型字段(CharField) 最长的长度为10
name = models.CharField(max_length=10)
# 模型类:PeopleInfo
class PeopleInfo(models.Model):
# 人物姓名字段:name
name = models.CharField(max_length=10)
# 人物性别字段:gender
# 布尔类型
gender = models.BooleanField()
# 外键约束:book
# 外键要指定所属的模型类
book = models.ForeignKey(BookInfo)
在数据库中生成对应的表。
生成迁移文件,不会在数据库中生成表,只会创建一个数据表和模型的对应关系。
生成迁移文件,使用如下指令:
python manage.py makemigrations
# 外键约束:book
# 外键要指定所属的模型类
book = models.ForeignKey(BookInfo, on_delete=models.CASCADE)
报错:
TypeError: __init__() missing 1 required positional argument: 'on_delete'
原因:
django升级到2.0之后,表与表之间关联的时候必须写"on_delete"参数,否则会报错
来源:【异常】TypeError: init() missing 1 required positional argument: ‘on_delete‘
使用的是Django2.0以上的版本,在添加实体外键的时候,2.0以前的版本是默认级联删除的,在2.0以上的版本要加上:
models.ForeignKey(“表名”, on_delete=models.CASCADE)
之后再创建迁移文件,执行命令行就不会报错了
来源:Django运行创建迁移文件报错:TypeError: init() missing 1 required positional argument: ‘on_delete’
子应用没有进行注册,生成迁移文件会报错:
将创建的数据表和模型的对应关系迁移到数据库中。
迁移,使用如下指令:
python manage.py migrate





其他的表为系统自动创建。
运行项目

访问 Django 自带的后台
http://127.0.0.1:端口号/admin
http://127.0.0.1:9090/admin




终端运行如下命令:
python manage.py createsuperuser









在对应的模型类中重写__str__()方法
# 模型类:BookInfo
class BookInfo(models.Model):
# 书籍名称字段:name
# 字段的类型为 字符类型字段(CharField) 最长的长度为10
name = models.CharField(max_length=10)
def __str__(self):
return self.name
