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

第三篇:Django创建表关系及生命周期流程图

第三篇:Django创建表关系及生命周期流程图

文章目录

  • 第三篇:Django创建表关系及生命周期流程图
    • 一、Django中orm创建表关系
      • 一、数据库中的表关系
      • 二、创建表
    • 二、Django请求生命周期流程图

一、Django中orm创建表关系

一、数据库中的表关系

我们可以通过换位思考来理解数据表之间的关系,表关系如下所示。

"""
表与表之间的关系一对多多对多一对一没有关系
判断表关系的方法:换位思考
"""

我们先简单建立几张表,然后判断各个表之间的关系。

分别为图书表、作者表、出版社表、作者详情表【未画出】。我们逐个分析个表之间的关系,我们发现。

图书和出版社是一对多的关系 外键字段建在多的那一方 book
图书和作者是多对多的关系 需要创建第三张表来专门存储
作者与作者详情表是一对一

二、创建表

创建表关系,先将基表创建出来,然后再添加外键字段,且不用考虑先创建被关联表。

  1. 图书表

    class Book(models.Model):# 书名title = models.CharField(max_length=32)# 价格:总共八位 小数点后面占两位price = models.DecimalField(max_digits=8,decimal_places=2)# 外键:【一对多】图书和出版社是一对多 并且书是多的一方 所以外键字段放在书表里面publish = models.ForeignKey(to='Publish')  # 默认就是与出版社表的主键字段做外键关联# 外键:【多对多】图书和作者是多对多的关系 外键字段建在任意一方均可 但是推荐你建在查询频率较高的一方authors = models.ManyToManyField(to='Author')"""注意:authors是一个虚拟字段 主要是用来告诉orm 书籍表和作者表是多对多关系,让orm自动帮你创建第三张关系表。"""
    

    注意:

    """
    1、如果字段对应的是ForeignKey那么会orm会自动在字段的后面加_id
    2、如果你自作聪明的加了_id那么orm还是会在后面继续加_id
    """
    所以,后面在定义ForeignKey的时候就不要自己加_id
    
  2. 出版社表

    class Publish(models.Model):name = models.CharField(max_length=32)addr = models.CharField(max_length=32)
    
  3. 作者表

    class Author(models.Model):name = models.CharField(max_length=32)age = models.IntegerField()# 外键:【一对一】作者与作者详情是一对一的关系 外键字段建在任意一方都可以 但是推荐你建在查询频率较高的表中detail = models.OneToOneField(to='AuthorDetail')"""OneToOneField也会自动给字段加_id后缀,所以你也不要自作聪明的自己加_id"""
    
  4. 作者详情表

    class AuthorDetail(models.Model):# 注意BigIntegerFieldphone = models.BigIntegerField()  # 或者直接字符类型addr = models.CharField(max_length=32)
    
  5. 创建效果如下

我们进一步分析,打开app01_book,我们发现自动创建了主键字段id,同时给关联外键的字段publish自动添加了后缀,变成了publish_id。【此关系为多对一】

打开app01_author,我们发现给detail添加了后缀,变成了detail_id。【此关系为一对一】

打开app01_book_author,我们发现也自动添加了后缀。【此关系为多对多】

总结:

"""orm中如何定义三种关系?"""# 默认就是与出版社表的主键字段做外键关联
publish = models.ForeignKey(to='Publish')  
# 默认就是id之间建立外键关系
authors = models.ManyToManyField(to='Author') 
# 默认就是id之间建立外键关系
detail = models.OneToOneField(to='AuthorDetail')"""ForeignKey、OneToOneField、ManyToManyField会自动在字段后面加_id后缀"""

补充:

# 在django1.X版本中外键默认都是级联更新删除的
# 多对多的表关系可以有好几种创建方式 这里仅为其中一种
# 针对外键字段里面的其他参数 暂时不要考虑

二、Django请求生命周期流程图

补充:

缓存数据库:提前已经将你想要的数据准备好了 你来直接拿就可以,提高效率和响应时间。
案例:当你在修改你的数据的时候 你会发现数据并不是立刻修改完成的而是需要经过一段时间才会修改【博客园】

相关文章:

第三篇:Django创建表关系及生命周期流程图

第三篇:Django创建表关系及生命周期流程图 文章目录 第三篇:Django创建表关系及生命周期流程图一、Django中orm创建表关系一、数据库中的表关系二、创建表 二、Django请求生命周期流程图 一、Django中orm创建表关系 一、数据库中的表关系 我们可以通过…...

【玩泰山派】7、玩linux桌面环境xfce - (2)音视频,yt-dlp下载工具、parole播放器

文章目录 前言yt-dlpyt-dlp概述发展背景特点应用场景使用方式局限性 安装yt-dlpyt-dlp常用命令直接下载默认格式指定格式 查看视频所有分辨率下载指定分辨率参考 parole播放器使用Parole概述源码地址使用 前言 前面安装了ubuntu Xfce桌面环境(xubuntu-desktop),现在…...

【文献速递】NMR代谢组寻找预测DR发展的候选标志物

2024年7月5日,中山大学中山眼科中心王伟教授团队在Ophthalmology(IF:13.2)上发表了题为“Plasma Metabolomics Identifies Key Metabolites and Improves Prediction of Diabetic Retinopathy:Development and Validat…...

flask学习(1)

1.基本框架 from flask import Flask app Flask(__name__)app.route(/) def hello():return "<h1>Hello, Flask in Conda!</h1>"if __name__ __main__:app.run(host0.0.0.0, port5000, debugTrue) # 关键行&#xff01; 在此基础上 from flask imp…...

详解springcloudalibaba采用prometheus+grafana实现服务监控

1.官网下载安装 prometheus和grafana promethus 官网&#xff1a;https://prometheus.io/ 1.下载windows版本安装包 2.双击启动 3.访问地址 http://localhost:9090 grafana 官网&#xff1a;https://grafana.com/ 1.下载windows版本安装包 2.启动 &#xff0c;默认windo…...

Java查询数据库表信息导出Word

参考: POI生成Word多级标题格式_poi设置word标题-CSDN博客 1.概述 使用jdbc查询数据库把表信息导出为word文档, 导出为word时需要下载word模板文件。 已实现数据库: KingbaseES, 实现代码: 点击跳转 2.效果图 2.1.生成word内容 所有数据库合并 数据库不合并 2.2.生成文件…...

【金仓数据库征文】从云计算到区块链:金仓数据库的颠覆性创新之路

目录 一、引言 二、金仓数据库概述 2.1 金仓数据库的背景 2.2 核心技术特点 2.3 行业应用案例 三、金仓数据库的产品优化提案 3.1 性能优化 3.1.1 查询优化 3.1.2 索引优化 3.1.3 缓存优化 3.2 可扩展性优化 3.2.1 水平扩展与分区设计 3.2.2 负载均衡与读写分离 …...

Kotlin函数体详解:表达式函数体 vs 代码块函数体——使用场景与最佳实践

&#x1f9e9; 什么是表达式函数体&#xff08;Expression Body&#xff09;&#xff1f; 表达式函数体指的是使用 号直接返回一个表达式结果的函数写法。 ✅ 示例&#xff1a; fun add(x: Int, y: Int): Int x y这个函数的意思是&#xff1a;传入两个整数&#xff0c;返…...

【bug修复】一次诡异的接口数据显示 bug 排查之旅

一次诡异的接口数据显示 bug 排查之旅 在后端开发的日常中&#xff0c;总会遇到一些让人摸不着头脑的 bug&#xff0c;最近我就经历了一个颇为诡异的情况。接口接收到的响应 data 对象里字段明明都有值&#xff0c;但直接打印到控制台却显示空字符串&#xff0c;最后通过一个简…...

C++ RPC以及cmake

目录 1.RPC概念 2.RPC实现计算举例 3.python进行rpc调用 4.thrift实现分布式容器创建 5.阶段总结 6.cmake简介 7.cmake使用的一般步骤 8.cmake编译多层次文件 9.cmake编译多种交付件 1.RPC概念 # 1.需求分析 靠谱的商用项目不是只有一个可执行程序就够了的。好的商用…...

数字隔离器,筑牢AC-DC数字电源中的“安全防线”

在传统工业与现代科技高速交融的发展浪潮中&#xff0c;AC-DC数字电源作为电能转换的核心枢纽&#xff0c;不仅能将交流电精准地转化为直流电&#xff0c;还可通过软件编程实现电流限制、过温保护与设定输出电压等多种功能&#xff0c;是现代众多电力电子基础设施中不可或缺的精…...

使用“复合索引”和不使用“复合索引”的优化对比

目录 1.创建数据库 2.未创建索引 3.创建索引 4.结论 1.创建数据库 CREATE TABLE orders (order_id INT AUTO_INCREMENT PRIMARY KEY,customer_id INT,order_date DATE,total_amount DECIMAL(10, 2));插入数据&#xff1a; INSERT INTO orders (customer_id, order_date, t…...

.NETCore部署流程

资料下载&#xff1a;https://download.csdn.net/download/ly1h1/90684992 1.下载托管包托管捆绑包 | Microsoft Learn&#xff0c;下载后点击安装即可。 2.安装IIS 3.打开VS2022&#xff0c;新建项目&#xff0c;选择ASP.NET Core Web API 5.Program修改启动项&#xff0c;取…...

深入解析微软MarkitDown:原理、应用与二次开发指南

一、项目背景与技术定位 微软开源的MarkitDown并非简单的又一个Markdown解析器&#xff0c;而是针对现代文档处理需求设计的工具链核心组件。该项目诞生于微软内部大规模文档系统的开发实践&#xff0c;旨在解决以下技术痛点&#xff1a; 大规模文档处理性能&#xff1a;能够高…...

Rust 2025:内存安全革命与异步编程新纪元

Rust 2025 Edition通过区域内存管理、泛型关联类型和零成本异步框架三大革新&#xff0c;重新定义系统级编程语言的能力边界。本次升级不仅将内存安全验证效率提升80%&#xff0c;更通过异步执行器架构优化实现微秒级任务切换。本文从编译器原理、运行时机制、编程范式转型三个…...

Vue3 setup、计算属性、侦听器、响应式API

一、setup 一、setup 函数基础 作用&#xff1a;组合式 API 的入口&#xff0c;用于定义响应式数据、方法和生命周期钩子 执行时机&#xff1a;在 beforeCreate 之前调用&#xff0c;此时组件实例尚未创建 基本结构&#xff1a; export default {setup(props, context) {/…...

从内核到应用层:深度剖析信号捕捉技术栈(含sigaction系统调用/SIGCHLD回收/volatile内存屏障)

Linux系列 文章目录 Linux系列前言一、进程对信号的捕捉1.1 内核对信号的捕捉1.2 sigaction()函数1.3 信号集的修改时机 二、可重入函数三、volatile关键字四、SIGCHLD信号 前言 Linux系统中&#xff0c;信号捕捉是指进程可以通过设置信号处理函数来响应特定信号。通过信号捕捉…...

【KWDB 创作者计划】_嵌入式硬件篇---寄存器与存储器截断与溢出

文章目录 前言一、寄存器与存储器1. 定义与基本概念寄存器(Register)位置功能特点存储器(Memory)位置功能特点2. 关键区别3. 层级关系与协作存储层次结构协作示例4. 为什么需要寄存器性能优化指令支持减少总线竞争5. 其他寄存器类型专用寄存器程序计数器(PC)栈指针(SP)…...

Python torchvision.datasets 下常用数据集配置和使用方法

torchvision.datasets 提供了许多常用的数据集类&#xff0c;以下是一些常用方法&#xff08;datasets中有大量数据集处理方法&#xff0c;这里仅展示了部分数据集处理方法&#xff09;及其实现类的介绍、用法和输入参数解释&#xff1a; CIFAR CIFAR10 &#xff1a;包含 10 个…...

unity使用iTextSharp生成PDF文件

iTextSharp 可以在VS中工具下面得NuGet包管理器中下载 &#xff0c;具体操作可以搜一下 很多 &#xff0c; 我直接把我得生成pdf代码附上 我这个是生成我一个csv文件内容和图片 using System.IO; using UnityEngine; using iTextSharp.text; using iTextSharp.text.pdf; using…...

django admin 添加自定义页面

在Django中&#xff0c;你可以通过多种方式向Django Admin添加自定义页面。以下是一些常见的方法&#xff1a; 方法1&#xff1a;使用ModelAdmin的get_urls()方法 如果你只是想添加一个简单的页面来展示信息&#xff0c;你可以在你的ModelAdmin类中重写get_urls()方法。 from…...

Java并发编程|CompletableFuture原理与实战:从链式操作到异步编排

🔥 本文系统讲解Java并发编程核心类CompletableFuture,涵盖线程池配置策略、异步编程实践、异常处理机制等关键技术。通过电商订单系统与物流调度实战案例,深度解析:1)CompletableFuture链式操作与异步编排 2)多线程任务聚合与结果处理 3)生产级异常处理方案 4)组合操…...

动态自适应分区算法(DAPS)设计流程详解

动态自适应分区算法&#xff08;Dynamic Adaptive Partitioning System, DAPS&#xff09;是一种通过实时监测系统状态并动态调整资源分配策略的智能算法&#xff0c;广泛应用于缓存优化、分布式系统、工业制造等领域。本文将从设计流程的核心步骤出发&#xff0c;结合数学模型…...

优雅实现网页弹窗提示功能:JavaScript与CSS完美结合

在现代Web开发中&#xff0c;弹窗提示是提升用户体验的重要元素之一。本文将深入探讨如何实现一个优雅、可复用的弹窗提示系统&#xff0c;避免常见问题如重复触发、样式混乱等。 核心代码解析 // 控制弹窗是否可以显示的标志 let alertStatus true;// 显示提示信息 functio…...

LeetCode-Hot100

数组 1.数组——最大子数组和 解题思路&#xff1a;动态规划 动态规划解决问题的步骤&#xff1a;1.理解题意。题目要求只返回结果&#xff0c;不要求得到最大的连续子数组的哪一个&#xff0c;这样的问题常常可以用动态规划。 2.定义子问题&#xff1a;eg&#xff1a;以 −…...

【Redis】有序集合类型Sortedset 常用命令详解

此类型和 set 一样也是 string 类型元素的集合&#xff0c;且不允许重复的元素 不同的是每个元素都会关联一个double类型的分数&#xff0c;redis正是通过分数来为集合中的成员进行从小到大的排序 有序集合的成员是唯一&#xff0c;但分数(score)却可以重复 1. zadd - 添加 语法…...

前缀和-724.寻找数组的中心下标-力扣(LeetCode)

一、题目解析 我们需要求出中心下标处两边的和是否相等。 二、算法解析 解法1&#xff1a;暴力枚举 O(n*2)(时间复杂度) 固定i&#xff0c;计算[0,i-1]的和&#xff0c;计算[i1,n-1]的和&#xff0c;然后比较是否相等。遍历i为n次&#xff0c;每次计算n-1个数据的值&#xff…...

缓存与数据库数据一致性:旁路缓存、读写穿透和异步写入模式解析

旁路缓存模式、读写穿透模式和异步缓存写入模式是三种常见的缓存使用模式&#xff0c;以下是对三种经典缓存使用模式在缓存与数据库数据一致性方面更全面的分析&#xff1a; 一、旁路缓存模式&#xff08;Cache - Aside Pattern&#xff09; 1.数据读取流程 应用程序首先向缓…...

HTML邮件背景图兼容 Outlook

在 HTML 邮件中设置背景图片时&#xff0c;Outlook&#xff08;尤其是桌面版的 Outlook for Windows&#xff09;经常不会正确显示背景图&#xff0c;这是因为outlook 是使用 Word 作为邮件渲染引擎&#xff0c;而不是标准的 HTML/CSS 渲染方式。 推荐的解决方案&#xff1a;使…...

Linux之七大难命令(The Seven Difficult Commands of Linux)

Linux之七大难命令 、背景 作为Linux的初学者&#xff0c;肯定要先掌握高频使用的指令&#xff0c;这样才能让Linux的学习在短时间内事半功倍。但是&#xff0c;有些指令虽然功能强大&#xff0c;但因参数多而让初学者们很害怕&#xff0c;今天介绍Linux中高频使用&#xff0…...

每日Html 4.24

&#x1f4da; 每日一个Html小知识 &#x1f40d; 每天花1分钟&#xff0c;解锁一个Html实用技巧/冷知识&#xff01;无论是新手还是老手&#xff0c;这里都有让你眼前一亮的编程干货。 ✨ 今日主题&#xff1a;<dialog> 标签 &#x1f4a1; 你知道吗&#xff1f; 浏览…...

YOLOv11改进-双Backbone架构:利用双backbone提高yolo11目标检测的精度

一、引言&#xff1a;为什么我们需要双Backbone&#xff1f; 在目标检测任务中&#xff0c;YOLO系列模型因其高效的端到端检测能力而备受青睐。然而&#xff0c;传统YOLO模型大多采用单一Backbone结构&#xff0c;即利用一个卷积神经网络&#xff08;CNN&#xff09;作为特征提…...

嵌入式Linux驱动开发:LED实验

在嵌入式Linux驱动开发中&#xff0c;LED实验可以通过多种方式实现&#xff0c;主要包括设备树下的LED实验、新字符设备驱动的LED实验和GPIO子系统的LED实验。这三种方式在硬件资源管理、驱动架构和开发流程上有显著区别&#xff0c;下面从多个维度进行对比分析&#xff1a; 1.…...

系统与网络安全------弹性交换网络(2)

资料整理于网络资料、书本资料、AI&#xff0c;仅供个人学习参考。 Eth-Trunk 组网中经常会遇到的问题 链路聚合技术 概述 Eth-Trunk&#xff08;链路聚合技术&#xff09;作为一种捆绑技术&#xff0c;可以把多个独立的物理接口绑定在一起&#xff0c;作为一个大带宽的逻辑…...

Kotlin Multiplatform--01:项目结构基础

Kotlin Multiplatform--01&#xff1a;项目结构基础 引言Common CodeTargetsExpected 和 actual1.使用函数2.使用接口 引言 以下为使用 Android Studio 创建的默认 Kotlin Multiplatform 的项目结构&#xff0c;本章将对项目结构进行简单介绍&#xff0c;让读者对 Kotlin Multi…...

SEO(Search Engine Optimization,搜索引擎优化)相关知识点

SEO&#xff08;Search Engine Optimization&#xff09;是指搜索引擎优化&#xff0c;是计算机领域中通过技术手段和内容策略&#xff0c;提升网站在搜索引擎&#xff08;如Google、Bing、百度&#xff09;中自然&#xff08;非付费&#xff09;排名的系统性方法。是一种通过优…...

轻松完成视频创作,在线视频编辑器,无需下载软件,功能多样实用!

小白工具的在线视频编辑https://www.xiaobaitool.net/videos/edit/ 功能丰富、操作简便&#xff0c;在线裁剪或编辑视频工具&#xff0c;轻松完成视频创作能满足多种视频编辑需求。 格式支持广泛&#xff1a;可编辑超百种视频格式&#xff0c;基本涵盖常见和小众视频格式&#…...

typescript学习笔记(全)

1.安装 全局安装 npm i -g typescript局部安装 npm i typescript初始化 tsc --init就会在所在目录下创建出一个tsconfig.json的ts配置文件 2.编译 如果是全局安装 tsc index.ts就会在同目录下编译出一个index.js文件 如果是局部安装 npx tsc index.ts3.特性 1.静态类…...

centos挂载新的硬盘

如果要将 nvme0n1 挂载到 /data 目录&#xff08;而不是 /&#xff09;&#xff0c;操作会更简单&#xff0c;无需迁移系统文件。以下是详细步骤&#xff1a; 1. 检查磁盘情况 lsblk输出&#xff1a; NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT sda 8:0 …...

​​客户案例 | 西昊智能家具:日事清【目标】【日程】【项目】助力高效OKR管理

随着社会现代化、科技化的发展&#xff0c;人们越来越青睐智能化的家具产品&#xff0c;以此来提升家居的安全性、便利性与舒适性。目前&#xff0c;智能家具的行业规模正在不断扩张&#xff0c;产业也逐渐步入高质量增长模式。面对繁荣的市场前景&#xff0c;西昊智能家具与日…...

16.磁环在EMC设计中的选型与运用

磁环在EMC设计中的选型与运用 1. 磁环选型的参数和注意事项2. 磁环的选型方法3. 非晶磁环 1. 磁环选型的参数和注意事项 &#xff08;1&#xff09;损耗电阻R(f)和L(f)是频率的函数&#xff0c;因此IL也是频率的函数&#xff1b; &#xff08;2&#xff09;fL段&#xff0c;R(f…...

oralce 查询未提交事务和终止提交事务

查询提交记录 SELECT s.sid,s.serial#,s.username,s.status,t.start_time,t.used_ublk,t.log_io,t.phy_io FROM v$session sJOIN v$transaction t ON s.saddr t.ses_addr; 查到的记录如下&#xff1a; 如果要终止第一次提交&#xff0c;如下操作 ALTER SYSTEM KILL SESSION…...

智能小助手部署 Win10 + ollama的Deepseek + CentOS+ maxKB

一、适用场景 1、企业内部知识管理 &#xff08;1&#xff09;快速查询政策与流程文档&#xff1a; 员工通过自然语言提问&#xff0c;MaxKB 能迅速定位相关文档并给出准确答案&#xff0c;减少人工检索成本&#xff0c;提升企业内部知识获取的效率。 &#xff08;2&#xff0…...

CentOS 7 系统中,防火墙要怎么使用?

在 CentOS 7 系统中&#xff0c;默认有两个防火墙管理工具&#xff1a; firewalld&#xff08;默认的动态防火墙&#xff0c;基于 D-Bus 管理&#xff09; iptables&#xff08;传统的静态防火墙&#xff0c;底层由 netfilter 提供支持&#xff09; 是否需要关闭这两个防火墙…...

网页版 deepseek 对话问答内容导出为 PDF 文件和 Word 文件的浏览器插件下载安装和使用说明

文章目录 网页版 deepseek 浏览器扩展应用程序插件1. 预览效果2. 功能介绍3. 浏览器扩展应用程序下载3.1. 下载方式13.2. 下载方式24. 安装教程4.1. Chrome 浏览器安装步骤4.2. Edge 浏览器安装步骤5. 使用说明网页版 deepseek 浏览器扩展应用程序插件 1. 预览效果 预览效果 导…...

MySQL 报错解析:SQLSyntaxErrorException caused by extra comma before FROM

一、遇到的错误 在日常开发中&#xff0c;尤其是使用 MyBatis 等 ORM 框架操作 SQL 时&#xff0c;我们经常会遇到类似下面的错误。 ### Error querying database. Cause: java.sql.SQLSyntaxErrorException: You have an error in your SQL syntax; check the manual that co…...

高光谱相机在生物医学中的应用:病理分析、智慧中医与成分分析

高光谱成像技术&#xff08;Hyperspectral Imaging, HSI&#xff09;通过捕捉物质的连续光谱信息与空间信息&#xff0c;形成“光谱立方体”&#xff0c;能够揭示传统成像技术无法获取的分子级特征。作为国内光谱技术领域的领军企业&#xff0c;深圳市中达瑞和科技有限公司依托…...

2025 年“泰迪杯”数据挖掘挑战赛B题——基于穿戴装备的身体活动监测问题分析

摘要 本文聚焦于基于穿戴设备采集的加速度计数据,深入研究志愿者在日常活动中的行为特征,构建了多个数学建模框架,实现从身体活动监测、能耗预测、睡眠阶段识别到久坐预警等多个目标。我们依托于多源数据融合与机器学习模型,对人体活动状态进行识别与分析,为健康管理、行…...

10.接口而非实现编程

10.接口而非实现编程 目录介绍 01.接口编程原则 1.1 接口指导思想 02.如何理解接口 2.1 重点搞清楚接口2.2 抽象的思想 03.来看一个案例 3.1 图片存储的案例3.2 业务拓展问题3.3 代码演变设计思想3.4 重构后的代码 04.定义接口的场景 4.1 要有接口意识4.2 接口具体的场景4.3 …...

基于大语言模型的AI智能体开发:构建具备工具使用能力的智能助手

本文将结合大语言模型&#xff08;LLM&#xff09;与工具调用能力&#xff0c;构建新一代AI智能体系统。通过ReAct框架实现智能思考-行动循环&#xff0c;集成网络搜索、计算器、API调用等外部工具&#xff0c;并基于LangChain实现可扩展的智能体架构。 一、新一代AI智能体技术…...