B-01 Django-第二部分(熟练掌握)-模型(Model)设计-开始&介绍

Django-第二部分(熟练掌握)-模型(Model)设计-开始&介绍

目标

前面已经介绍了如何快速入门,现在开始熟练掌握一些知识

  • 了解ORM
  • 了解Django模型作用
  • 了解Django模型设计步骤

回顾

一、Django生命周期

之前我们介绍Django的时候,讲解了Django的生命周期,现在我们来回顾一下这个生命周期。如下图所示:
在这里插入图片描述

说明:

  • 客户在页面输入url访问服务器,服务器接受请求后,先通过路由(URL)控制分发到对应的视图(View)处理,
  • 视图(View)在进行逻辑处理的时候,通过模型(Models)从数据库获取对应数据。
  • 模型(Model)获取数据后,返回给视图。
  • 视图(View)将模型获取的数据,渲染到模板(Template)
  • 最后将渲染好的模板(Template)返回给客户浏览器展示。

一、ORM与Django模型

1.1、ORM概述

1.1.1、ORM是什么

ORM,即Object-Relational Mapping(对象关系映射),它的作用是在关系型数据库和业务实体对象之间作一个映射,这样,我们在具体的操作业务对象的时候,就不需要再去和复杂的SQL语句打交道,只需简单的操作对象的属性和方法。

1.1.2、ORM的优缺点

  • 优点:摆脱复杂的SQL操作,适应快速开发;让数据结构变得简洁;数据库迁移成本更低(如从mysql->oracle)
  • 缺点:性能较差、不适用于大型应用;复杂的SQL操作还需通过SQL语句实现

1.1.3、ORM的原理

  • 第一步:根据对象的类型生成表结构、
  • 第二步:将对象、列表的操作转换为sql语句、
  • 第三步:将sql语句查询到的结果转换为对象、列表

1.2、Django模型

1.2.1、模型(Model)是什么

简而言之即数据模型。模型不是数据库本身(比如数据库里的数据),而是抽象描述数据的构成和逻辑关系。模型是您的数据唯一而且准确的信息来源。它包含您正在储存的数据的重要字段和行为。一般来说,每一个模型都映射一个数据库表。当定义好Model模型后,Django的接口会自动帮你在数据库生成相应的数据表(table)。这样就不用自己通过SQL语言创建数据库表。

1.2.2、模型(Model)的特定

  • 每个模型都是一个 Python 的类,这些类继承 django.db.models.Model
  • 模型类的每个属性都相当于一个数据库的字段。
  • 综上诉说,Django 给你一个自动生成访问数据库的 API;请参阅 进行查询。

1.2.3、模型(Model)的优缺点

  • 优点:Django对各种数据库提供了很好的支持,Django为这些数据库提供了统一的调用API,可以根据不同的业务需求选择不同的数据库

1.3、Django与ORM对应关系

1.3.1、定义字段与表之间对应关系

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7sRqq6WB-1575969641967)(en-resource://database/6995:1)]

1.3.2、数据记录操作之间对应关系

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-qyRZq8HK-1575969641968)(en-resource://database/3285:1)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-owCYLrwv-1575969641969)(en-resource://database/3409:1)]

说明:

  • 整体来说,我们从直接操作数据库,变成了操作Python对象和方法了。

二、模型(Model)设计流程:

2.1、设计流程过程说明

第一步-配置使用数据库
第二步-定义模型类
第三步-迁移数据
第四步-访问使用数据

说明

  • 第一步:配置使用数据库

    • a、配置使用不同数据库
  • 第二步:定义模型类

    • a、字段使用
    • b、如何定义
    • c、元选项
    • d、模型类属性与应用
  • 第三步:迁移数据

    • a、如果迁移数据
    • b、常见问题
  • 第四步:访问使用数据

    • a、数据操作

下面我们将按照这个步骤来逐步掌握模型

三、官方指导

Django 提供了一个抽象的模型 (“models”) 层,为了构建和操纵你的Web应用的数据。阅读下面内容了解更多:
模型: 模型介绍 | 字段类型 | 索引 | Meta 选项 | Model 类
QuerySet: 执行查询 | QuerySet 方法参考 | 查询表达式
Model 实例: 实例方法 | 访问关联的对象
迁移: 迁移概述 | 操作参考 | SchemaEditor | 编写迁移
高级: 管理员 | 原始 SQL | 事务 | 聚合 | 搜索 | 自定义字段 | 多个数据库 | 自定义查询 | 查询表达式 | 条件表达式 | 数据库函数
其它: 支持的数据库 | 旧数据库 | 提供初始化数据 | 优化数据库访问 | PostgreSQL 的特定功能

[指导文档](%3Ca href=“https://docs.djangoproject.com/zh-hans/2.1/ref/models/”%3Ehttps://docs.djangoproject.com/zh-hans/2.1/ref/models/%3C/a%3E)