11.10 知识总结(数据的增删改查、如何创建表关系、Django框架的请求生命周期流程图)

一、 数据的增删改查

1.1 用户列表的展示

把数据表中得用户数据都给查询出来展示在页面上

添加数据

id username password gender age action

修改 删除

1.2 修改数据的逻辑分析

  1. 先确定修改哪条记录------>怎么样确定修改哪条记录?

  2. 通过什么字段可以确定唯一一条记录? 主键id,要携带主键id到后端.

  3. 在后端接收主键id值,然后根据这个id值再去表中查询数据,查询一条

  4. 然后把查询的数据在渲染到页面中,然后在修改

  5. 把修改之后的表单提交到后端,在做修改

1.3 删除功能的分析

  1. 给删除按钮加一个链接,携带当前记录的id值

  2. 后端要接收这个主键id值

  3. 后端直接执行删除操作

二、如何创建表关系(一对一,一对多,多对多)

"""

一对一

一对多

多对多

"""

我们以图书表、出版社表、作者表、作者详情表为例创建

判断表关系:换位思考法

分析表关系:

图书表和出版社表是一对多的关系 >>> 外键如何创建:外键字段建在多的一方

图书表和作者表是多对多的关系 >>> 外键如何创建:外键字段建在第三张表中

"""

创建多对多的方式有3种方式,先将一种

"""

作者表和作者详情是一对一的关系 >>> 外键如何创建:外键字段建在查询频率较高的一方

创建表关系字段先创建表的基础字段,先创建没有的外键的,最后在写外键字段

class Book(models.Model):

title = models.CharField(max_length=64)

"""

max_digits=None, 总共多少位

decimal_places=None 小数占几位

"""

price decimal(8,2)

price = models.DecimalField(max_digits=8, decimal_places=2)

publish_id = models.ForeignKey(to='Publish', to_field='id') # 创建外键的

"""如果你的字段是主键字段,那么,你就不用在字段的后面拼接_id了,它会自定的拼接_id"""

publish = models.ForeignKey(to='Publish') # 创建外键的 默认就是跟表的主键字段建立关系

"""

authors:它是一个虚拟字段,意思是,在book表中不会实际创建出来这个字段,它能够创建出来第三张表(自动)

"""

authors = models.ManyToManyField(to='Author', )

class Publish(models.Model):

title = models.CharField(max_length=64)

addr = models.CharField(max_length=64)

class Author(models.Model):

name = models.CharField(max_length=64)

author_detail = models.OneToOneField(to='AuthorDetail')

注意:

1.django1版本

on_delete
当删除关联表中的数据时,当前表与其关联的行的行为。

models.CASCADE
删除关联数据,与之关联也删除

models.DO_NOTHING
删除关联数据,引发错误IntegrityError

models.PROTECT
删除关联数据,引发错误ProtectedError

models.SET_NULL
删除关联数据,与之关联的值设置为null(前提FK字段需要设置为可空)

models.SET_DEFAULT
删除关联数据,与之关联的值设置为默认值(前提FK字段需要设置默认值)

models.SET

删除关联数据,

a. 与之关联的值设置为指定值,设置:models.SET(值)

b. 与之关联的值设置为可执行对象的返回值,设置:models.SET(可执行对象)

  1. django2

class Book(models.Model):

title = models.CharField(max_length=64)

"""

max_digits=None, 总共多少位

decimal_places=None 小数占几位

"""

price decimal(8,2)

price = models.DecimalField(max_digits=8, decimal_places=2)

publish_id = models.ForeignKey(to='Publish', to_field='id') # 创建外键的

"""如果你的字段是主键字段,那么,你就不用在字段的后面拼接_id了,它会自定的拼接_id"""

publish = models.ForeignKey(to='Publish', on_delete=models.CASCADE) # 创建外键的 默认就是跟表的主键字段建立关系

"""

authors:它是一个虚拟字段,意思是,在book表中不会实际创建出来这个字段,它能够创建出来第三张表(自动)

"""

authors = models.ManyToManyField(to='Author', )

class Publish(models.Model):

title = models.CharField(max_length=64)

addr = models.CharField(max_length=64)

class Author(models.Model):

name = models.CharField(max_length=64)

author_detail = models.OneToOneField(to='AuthorDetail',on_delete=models.CASCADE)

class AuthorDetail(models.Model):

phone = models.CharField(max_length=64)

qq = models.CharField(max_length=64)

三、 Django的请求生命周期流程图

相关推荐
__log3 小时前
ComfyUI 集成技术方案分析报告
javascript·python·django
俊哥工具1 天前
鼠标自动连点怎么设置?详细教学,简单易懂!
python·django·pdf·计算机外设·virtualenv·pygame
ProcessOn官方账号1 天前
PRISMA流程图:系统综述与荟萃分析的核心工具
流程图·prisma流程图·系统综述·荟萃分析
源码之家2 天前
计算机毕业设计:Pyhon健康数据分析系统 Django框架 数据分析 可视化 身体数据分析 大数据(建议收藏)✅
大数据·python·数据挖掘·数据分析·django·lstm·课程设计
vx_biyesheji00042 天前
计算机毕业设计:Python医疗数据分析平台 Flask框架 数据分析 可视化 医疗大数据 用户画像(建议收藏)✅
大数据·python·深度学习·数据分析·django·flask·课程设计
源码之家2 天前
计算机毕业设计:Python医疗数据可视化系统 Flask框架 数据分析 可视化 医疗大数据 用户画像(建议收藏)✅
python·深度学习·信息可视化·数据分析·django·flask·课程设计
Wonderful U2 天前
【前后端】如何使用agent来实现django+vue的前后端开发
vue.js·django
QQ8057806513 天前
django基于机器学习的电商评论情感分析系统设计实现
python·机器学习·django
枳实-叶3 天前
【Linux驱动开发】第7天:总线-设备-驱动三大核心模型:通俗讲解+完整流程图
linux·驱动开发·流程图
凯瑟琳.奥古斯特4 天前
Django Flask FastAPI 三者对比
开发语言·python·django·flask·fastapi