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

     

  • 相关阅读:
    AI系统ChatGPT程序源码+AI绘画系统源码+支持GPT4.0+Midjourney绘画
    《Python - 文本文件的读写》
    SOP作业指导书系统如何帮助厂家实现数字化转型
    centos7安装frpc
    gorm的使用(持续更新)
    33岁程序员的年中总结
    记录单片机编码的坑
    吉他效果器开发方法
    springcloud:四、nacos介绍+启动+服务分级存储模型/集群+NacosRule负载均衡
    Opengl之深度测试
  • 原文地址:https://blog.csdn.net/weixin_66010453/article/details/134377773