zoukankan      html  css  js  c++  java
  • 🍖django ORM 表关系与django 请求生命周期流程图

    一.表与表之间的关系

    1.三种对应关系

    • 一对多
    • 一对一
    • 多对多

    2.表关系判断

    • 得出表关系结论需要双向进行观察对比(换位思考)

    3.表关系举例

    • 书籍表 : books
    • 出版社表 : publish
    • 作者表 : author
    • 作者介绍表 : author_info
    • 一本书可以对用多位作者, 一位作者可以对应多本书 (多对多)
    • 一本书只能有一个出版社, 一个出版社可以出版多本书 (一对多)
    • 一位作者对应一个作者简介,一个作者简介对应一位作者 (一对一)

    4.ORM 针对外键字段的创建位置

    • 一对多
    推荐建在多的一方
    
    • 一对一
    建在任何一方都可以, 但是推荐建在查询频率较高的表中
    
    • 多对多
    建在任何一方都可以, 但是推荐建立在查询频率较高的表中
    

    二.ORM 创建外键基本语法

    1.一对一

    author_info = models.OneToOneField(to='Author_info')
    

    2.一对多

    publish = models.ForeignKey(to='Publish')
    

    3.多对多

    author = models.ManyToManyField(to='Author')
    

    三.创建外键示例

    • models.py 文件
    # 书籍表
    class Book(models.Model):
        # 不创建主键,orm会自动帮你创建
        title = models.CharField(max_length=32)
        price = models.DecimalField(max_digits=8,decimal_places)  # 最大位数8位,小数点占两位
        # 建立出版社外键, 默认就是 Publish 表的主键, 并且自动在外键字段后面加上"_id"后缀
        publish = models.ForeignKey(to='Publish') 
        # 建立作者外键, 自动帮你创建book与author的中间表, 虚拟的字段并不会在表中实例化出来, 只是告诉ORM创建第三张关系表
        authors = models.MaryToMaryField(to='Author')
        
    # 出版社表
    class Publish(models.Model):
        title = models.CharField(max_length=32)
        email = models.EmailField()
        
    # 作者表
    class Author(models.Model):
        name = models.CharField(max_length=32)
        age = models.IntegerField()
        # 建立作者简介外键
        author_info = models.OneToOneField(to='Author_info')
        
    # 作者简介表
    class Author_info(models.Model):
        phone = models.BigIntegerField()
        addr = models.CharField(max_length=128)
    

    三.django 请求生命周期流程图

    image-20210316190302448

  • 相关阅读:
    SQL_server 将表中的记录 转换成 Insert(插入) SQL 语句
    Delphi DBGridEh导出Excel
    hdu 2018 母牛的故事
    hdu 2084 数塔
    hdu 2190 重建希望小学
    hdu 2501 Tiling_easy version
    hdu 2046 骨牌铺方格
    hdu 2045 不容易系列之(3)—— LELE的RPG难题
    高精度模板
    各种平面分割问题总结(转)
  • 原文地址:https://www.cnblogs.com/songhaixing/p/14545318.html
Copyright © 2011-2022 走看看