IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 第3章Django框架模型 -> 正文阅读

[Python知识库]第3章Django框架模型

第3章 Django框架模型

3.1 认识模型

3.1.1 Django模型的作用

在这里插入图片描述
在这里插入图片描述

3.2 模型使用入门

3.2.1 定义模型

3.2.2 设计模型代码

步骤:
1、调用django.db模块导入models对象
2、定义一个继承自models.Model的类作为模型
3、类中的属性为数据库中的数据项(数据列)

3.2.3 使用模型

在这里插入图片描述

3.3 Django模型字段

3.3.1 字段的类型

在Django模型定义中,字段类型均派生自Field类的实例。Django框架的中Field类是一个抽象类,专门用于定义数据库表的列表项。

3.3.2 字段的选项

3.3.3 关联关系字段----外键(一对多关系)

** 以另一个关系的外键作主关键字的表被称为主表,具有此外键的表为主表的从表**
在这里插入图片描述
在这里插入图片描述

class ForeignKey(to,on_delete,**options)

参数to表示要关联的类
参数on_delete表示删除操作时的级联关系
可选参数**options

3.3.4 关联关系字段----一对一关系

在这里插入图片描述

class OneToOneField(to,on_delete,**options)

3.3.5 关联关系字段----多对多关系

在这里插入图片描述

class ManyToManyField(to,**options)

必须设置to位置的选项

3.3.6 自定义模型字段

3.4 Meta类

使用内部的Meta类来给模型赋予元数据
在这里插入图片描述

3.5 Django模型属性与方法

3.5.1 模型属性

在这里插入图片描述

3.5.2 模型方法

在这里插入图片描述

3.5.3 重写之前定义的模型方法

如save()方法和delete()方法等,可以通过super().save(…)调用父类方法来重写

3.6 Django模型继承

3.6.1 什么是模型继承

在这里插入图片描述
在这里插入图片描述

3.6.2 抽象基类

在这里插入图片描述
注意:
1、抽象基类不能作为普通Django模型使用,不生成数据表
2、从抽象基类继承来的字段可以被其他字段或值重写,或者可使用"None"标识符进 行删除

3.6.3 Meta继承

在这里插入图片描述
子类中Meta类的定义:
: class Meta(父类名.Meta):
:: …

3.6.4 related_name和related_query_name属性

3.6.5 多表继承

层次结构中每个模型都是一个单独的模型,每个模型指向分离的数据表,可被独立查询和创建
在继承关系中,子类和父类之间通过一个自动创建的OneToOneField连接

3.6.6 Meta和多表继承

若子类重新定义Mata类时没有指定ordering属性或get_latest_by属性,子类会从父类中继承这些属性

3.6.7 继承和反向关系

3.6.8 代理模型

应用场景:只是修改模型的Python级行为(如修改默认管理器或者添加一个新的方法)
目标:为原模型创建一个代理
特点
1、可以创建、删除或更新代理模型的实例,全部数据会存储成像使用原模型一样的形式。
2、在设计时可以修改代理默认的模型排序和默认管理器,不需要修改原模型
如何声明:使用代理模型时,可以像普通模型一样声明,将Meta类的proxy属性设置为True

特点2:
1、一个代理模型必须继承自一个非抽象模型类,不能继承自多个非抽象模型类
2、一个代理模型可以继承任意数量的抽象模型类
3、一个代理模型也可以继承任意数量的代理模型(只需共享同一个非抽象父类)

特点3:
1、如果没有在代理模型中指定模型管理器,默认会从父类模型中继承
2、如果在代理模型中指定了管理器,会成为默认的管理器,同时父类中定义的管理器仍然是可用的

3.6.9 代理模型继承和未托管模型

3.6.10 多重继承

同时继承多个父类模型
两种方法:
1、显式使用AutoField方法
2、在公共祖先中存储AutoField

3.7 通过包管理模型

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-07-04 22:49:56  更:2022-07-04 22:51:18 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 11:34:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码