04-Django-基础篇-模型
Posted 爱学习de测试小白
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了04-Django-基础篇-模型相关的知识,希望对你有一定的参考价值。
模型
前言
- 本篇来学习Django中的模型(Model)
ORM
- MVT设计模式中的Model, 专门负责和数据库交互.对应(models.py)
- 由于Model中内嵌了ORM框架, 所以不需要直接面向数据库编程.
- 而是定义模型类, 通过模型类和对象完成数据库表的增删改查.
- ORM框架就是把数据库表的行与相应的对象建立关联, 互相转换.使得数据库的操作面向对象
- 映射关系
开发步骤
需求分析
- 以下为书籍信息管理的数据关系:书籍和人物是 :一对多关系
- 先分析出项目中所需要的数据, 然后设计数据库表.
书籍信息表
字段名 | 字段类型 | 字段说明 |
---|---|---|
id | AutoField | 主键 |
name | CharField | 书名 |
id | name |
---|---|
1 | 西游记 |
2 | 三国演义 |
人物信息表
字段名 | 字段类型 | 字段说明 |
---|---|---|
id | AutoField | 主键 |
name | CharField | 人名 |
gender BooleanField | 性别 | |
book | ForeignKey | 外键 |
id | name | gender | book |
---|---|---|---|
1 | 孙悟空 | False | 1 |
2 | 白骨精 | True | 1 |
3 | 曹操 | False | 2 |
4 | 貂蝉 | True | 2 |
1. 定义模型类
- 在models.py中定义模型类,继承自models.Model
"""
1. 我们的模型类 需要继承自 models.Model
2. 系统会自动为我们添加一个主键--id
3. 字段
字段名=model.类型(选项)
字段名其实就是数据表的字段名
字段名不要使用 python,mysql等关键字
char(M)
varchar(M)
M 就是选项
"""
# 准备书籍列表信息的模型类
class BookInfo(models.Model):
# 创建字段,字段类型
name=models.CharField(max_length=10)
# 准备人物列表信息的模型类
class PeopleInfo(models.Model):
name = models.CharField(max_length=10)
gender = models.BooleanField()
# 外键约束:人物属于哪本书
book = models.ForeignKey(BookInfo,on_delete=models.CASCADE)
2. 模型迁移(建表)
- 迁移前先保证应用已注册
# settings.py
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'helloworld' # 注册应用
]
- 修改数据库配置;默认使用的是sqlite3数据库,修改为mysql数据库
- 安装mysqlclient包
pip install mysqlclient
# settings.py
DATABASES =
'default':
'ENGINE': 'django.db.backends.mysql', # 或者使用 mysql.connector.django
'NAME': 'dj_study', # 数据库名称
'USER': 'root', # 数据库账号
'PASSWORD': 'password', # 数据库密码
'HOST': 'localhost', # 数据库ip
'PORT': '3306', # 数据库端口
- 迁移由两步完成 :
- 生成迁移文件:根据模型类生成创建表的语句
python manage.py makemigrations
2. 执行迁移:根据第一步生成的语句在数据库中创建表
python manage.py migrate
3. 操作数据库
- 后面学习
以上是关于04-Django-基础篇-模型的主要内容,如果未能解决你的问题,请参考以下文章