当前位置: 首页 > news >正文

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(可执行对象)


2. 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的请求生命周期流程图

 

相关文章:

  • Django模板层知识
  • virtualbox基本配置
  • ubuntu安装mysql8.0.35过程和报错处理
  • Python采集某网站数据实现简单可视化效果, webpack Js逆向解密
  • XML Web 服务 Eclipse实现中的sun-jaxws.xml文件
  • Mac 本地部署thinkphp8【部署环境以及下载thinkphp】
  • txt2xml
  • DNS服务器典型配置
  • 算法模板题记录
  • Python万圣节礼物
  • LeetCode 2656. K 个元素的最大和:一次遍历(附Python一行版代码)
  • 【Pytorch和深度学习】栏目导读
  • Oneid方案
  • 《深入浅出.NET框架设计与实现》阅读笔记(四)
  • SOLIDWORKS Flow Simulation阀门内流体仿真
  • CentOS学习笔记 - 12. Nginx搭建Centos7.5远程repo
  • echarts的各种常用效果展示
  • IE报vuex requires a Promise polyfill in this browser问题解决
  • interface和setter,getter
  • js递归,无限分级树形折叠菜单
  • Mac转Windows的拯救指南
  • scrapy学习之路4(itemloder的使用)
  • windows下使用nginx调试简介
  • Work@Alibaba 阿里巴巴的企业应用构建之路
  • 基于Vue2全家桶的移动端AppDEMO实现
  • 计算机在识别图像时“看到”了什么?
  • 使用 5W1H 写出高可读的 Git Commit Message
  • 学习HTTP相关知识笔记
  • 1.Ext JS 建立web开发工程
  • HanLP分词命名实体提取详解
  • ​LeetCode解法汇总1410. HTML 实体解析器
  • !!【OpenCV学习】计算两幅图像的重叠区域
  • (C语言)字符分类函数
  • (论文阅读笔记)Network planning with deep reinforcement learning
  • (篇九)MySQL常用内置函数
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (十六)一篇文章学会Java的常用API
  • (转)Android中使用ormlite实现持久化(一)--HelloOrmLite
  • (转)AS3正则:元子符,元序列,标志,数量表达符
  • (转)IOS中获取各种文件的目录路径的方法
  • (转)创业家杂志:UCWEB天使第一步
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • .NET Core 2.1路线图
  • .Net Memory Profiler的使用举例
  • .NET/C# 如何获取当前进程的 CPU 和内存占用?如何获取全局 CPU 和内存占用?
  • .NET/C# 使用反射注册事件
  • .NET/C# 中你可以在代码中写多个 Main 函数,然后按需要随时切换
  • @for /l %i in (1,1,10) do md %i 批处理自动建立目录
  • @RequestMapping用法详解
  • [ C++ ] STL---string类的模拟实现
  • [ C++ ] STL---仿函数与priority_queue
  • [ vulhub漏洞复现篇 ] JBOSS AS 5.x/6.x反序列化远程代码执行漏洞CVE-2017-12149
  • [ 攻防演练演示篇 ] 利用通达OA 文件上传漏洞上传webshell获取主机权限
  • [BZOJ 4034][HAOI2015]T2 [树链剖分]
  • [BZOJ 4129]Haruna’s Breakfast(树上带修改莫队)