04-Django-基础篇-模型

Posted 爱学习de测试小白

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了04-Django-基础篇-模型相关的知识,希望对你有一定的参考价值。

模型


前言

  • 本篇来学习Django中的模型(Model)

ORM

  • MVT设计模式中的Model, 专门负责和数据库交互.对应(models.py)
  • 由于Model中内嵌了ORM框架, 所以不需要直接面向数据库编程.
  • 而是定义模型类, 通过模型类和对象完成数据库表的增删改查.
  • ORM框架就是把数据库表的行与相应的对象建立关联, 互相转换.使得数据库的操作面向对象

  • 映射关系

开发步骤

需求分析

  • 以下为书籍信息管理的数据关系:书籍和人物是 :一对多关系
  • 先分析出项目中所需要的数据, 然后设计数据库表.

书籍信息表

字段名字段类型字段说明
idAutoField主键
nameCharField书名
idname
1西游记
2三国演义

人物信息表

字段名字段类型字段说明
idAutoField主键
nameCharField人名
gender BooleanField性别
bookForeignKey外键
idnamegenderbook
1孙悟空False1
2白骨精True1
3曹操False2
4貂蝉True2

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',      # 数据库端口
    

  • 迁移由两步完成 :
  1. 生成迁移文件:根据模型类生成创建表的语句
python manage.py makemigrations



2. 执行迁移:根据第一步生成的语句在数据库中创建表

python manage.py migrate

3. 操作数据库

  • 后面学习

以上是关于04-Django-基础篇-模型的主要内容,如果未能解决你的问题,请参考以下文章

django目录

RNN经典案例:RNN模型构建人名分类器

RNN经典案例:RNN模型构建人名分类器

Django进阶Model篇002 - 模型类的定义

零基础快速开发Vue图书管理系统—主体列表实现篇

零基础快速开发Vue图书管理系统—主体列表实现篇