iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >详解解Django 多对多表关系的三种创建方式
  • 501
分享到

详解解Django 多对多表关系的三种创建方式

2024-04-02 19:04:59 501人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

目录1、方式一:自动创建2、方式二:纯手动创建3、方式三:半自动创建1、方式一:自动创建 # Django ORM 自动帮我们创建第三张表,我的app名字是app01, 表名为:

1、方式一:自动创建


# Django ORM 自动帮我们创建第三张表,我的app名字是app01, 表名为:app01_book_authors
# 这种方式可以让DjanGo迅速的帮我们建一张关系表出来,好处是可以通过这张表进行跨表查询,坏处是一张虚拟表,拓展性差。

# 书籍表
class Book(models.Model):
    name = models.CharField(max_length=32)
    authors = models.ManyToManyField(to='Author')

# 作者表
class Author(models.Model):
    name = models.CharField(max_length=32)

2、方式二:纯手动创建


# 这种方式无法通过orm跨表查询(不建议使用)

# 表1
class Book(models.Model):
    name = models.CharField(max_length=32)

# 表2
class Author(models.Model):
    name = models.CharField(max_length=32)

# 表3
class Book2Author(models.Model):
    book = models.ForeignKey(to='Book')
    author = models.ForeignKey(to='Author')
    info = models.CharField(max_length=32)

3、方式三:半自动创建


# 可扩展性高,并且能够符合orm查询

class Book(models.Model):
    name = models.CharField(max_length=32)
    # 第三种创建表的方式
    authors = models.ManyToManyField(to='Author', through='Book2Author', through_fields=('book', 'author'))
    # through 告诉 django orm 书籍表和作者表的多对多关系是通过 Book2Author 表来记录的
    # through fields 告诉 django orm 记录关系是用 Book2Author 表中的 book 字段 和 author字段 来记录的
    # 此关系在哪张表写的,through_fields中就优先写哪张表(那个字段)的小写
    # 但是,多对多字段的 add set remove clear 四个方法就用不了了


class Author(models.Model):
    name = models.CharField(max_length=32)


class Book2Author(models.Model):
    book = models.ForeignKey(to='Book')
    author = models.ForeignKey(to='Author')
    info = models.CharField(max_length=32)

到此这篇关于详解解Django 多对多表关系的三种创建方式的文章就介绍到这了,更多相关Django创建多对多表关系内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: 详解解Django 多对多表关系的三种创建方式

本文链接: https://www.lsjlt.com/news/133247.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 详解解Django 多对多表关系的三种创建方式
    目录1、方式一:自动创建2、方式二:纯手动创建3、方式三:半自动创建1、方式一:自动创建 # django orm 自动帮我们创建第三张表,我的app名字是app01, 表名为:...
    99+
    2024-04-02
  • Android AlertDialog多种创建方式案例详解
    目录一、setMessage:设置对话框内容为简单文本内容二、setItem:设置文本框内容为简单列表项三、setSingleChoiceItems()设置对话框内容为单选列表项四、...
    99+
    2024-04-02
  • Django模型层实现多表关系创建和多表操作
    目录前言创建表关系多表数据操作 - 增删改一对多&一对一关系 - 增删改增加数据删除数据修改数据多对多关系 - 增删改增加多对多关系 - add()删除多对多关系 - rem...
    99+
    2024-04-02
  • MySQL创建多对多和一对一关系方法
    目录一、创建多对多1.学生表2.课程表3.中间表4.插入数据5.查询学生1选了哪些科目6.查询id=2数学被谁选了 二、MySQL 创建一对一关系1.一对一2.插入数据一、...
    99+
    2024-04-02
  • 详解Java实现多线程的三种方式
    目录并发与并行进程与线程java的线程java多线程机制java的主线程线程的生命周期创建线程(3种)继承Thread类实现线程创建实现Runnable接口实现Callable接口线...
    99+
    2024-04-02
  • javascript对象的多种合并方式详解
    目录对象合并的多种方式(对于通过接口获取数据之后赋值给本地对象的时候极其有用)第一种:手动赋值(很捞)第二种:扩展运算符第三种:Object.assign() (最推荐)1.vue ...
    99+
    2024-04-02
  • Django模型层如何实现多表关系创建和多表操作
    本篇内容介绍了“Django模型层如何实现多表关系创建和多表操作”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!目录前言创建表关系多表数据操作...
    99+
    2023-06-20
  • C# 创建单例的多种方式
    目录第一种常见的方式创建单例: 第二种方式创建单例:第三种方式创建单例:第四种方式创建单例:第五种方式创建单例:关于为什么需要创建单例?这里不过多介绍,具体百度知。 &nb...
    99+
    2024-04-02
  • 详解mybatis多对一关联查询的方式
    根据ID查询学生信息,要求该学生的教师和班级信息一并查出 第一种关联方式 1.修改实体类Student,追加关联属性,用于封装关联的数据 修改完以后重新生成get set方法还有t...
    99+
    2024-04-02
  • SQL 多表联合查询的几种方式详解
    目录前言正文内连接等值连接/相等连接自然连接自连接外连接左外连接右外连接全外连接/完全外连接交叉连接/笛卡尔积总结前言 连接查询是关系数据中最主要的查询,包括内连接、外连接等。通过连...
    99+
    2023-02-15
    SQL 多表联合查询 SQL 多表查询 SQL 联合查询
  • SQL 多表联合查询的几种方式详解
    目录前言正文内连接等值连接/相等连接自然连接自连接外连接左外连接右外连接全外连接/完全外连接交叉连接/笛卡尔积总结前言 连接查询是关系数据中最主要的查询,包括内连接、外连接等。通过连接运算符可以实现多个表查询。 正文 连...
    99+
    2023-02-15
    SQL 多表联合查询 SQL 多表查询 SQL 联合查询
  • 详解Redis集群搭建的三种方式
    目录一、单节点实例二、主从模式(master/slaver)三、sentinel 模式四、cluster 模式一、单节点实例 单节点实例还是比较简单的,平时做个测试,写个小程序如果需...
    99+
    2024-04-02
  • java创建多线程的七种方式
    一、继承Thread,重写run方法 通过自定义一个类(这里起名为:MyThread),继承Thread类,重写run方法,最后在main方法中new出MyThread实例,调用这个实例的继承的Thread类的start方法创建一个线程。 ...
    99+
    2023-09-26
    java
  • Django展示可视化图表的多种方式
    目录1. 前言 2. Echarts 3. Pyecharts 3-1  安装依赖3-2  拷贝 pyecharts 的模板文件到项...
    99+
    2024-04-02
  • 关于MySQL中创建表的三种方法分享
    本文主要介绍了MySQL中创建表的三种方法,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教 SQL 标准使用 CREATE TABLE 语句创建数据表;MySQL 则实现了三种创建表的方法,支持自定义...
    99+
    2023-10-10
    mysql android 数据库
  • js 创建对象的多种方式与优缺点小结
    目录早期创建方式工厂模式构造函数模式构造函数模式优化原型模式构造函数和原型模式组合动态原型模式寄生构造函数模式稳妥构造函数模式早期创建方式 var obj = new Objec...
    99+
    2024-04-02
  • Java Hibernate中一对多和多对多关系的映射方式
    目录Hibernate的一对多和多对多Hibernate的一对多Hibernate的一对多配置Hibernate的一对多操作Hibernate的多对多Hibernate的多对多配置H...
    99+
    2023-05-18
    Java Hibernate一对多 Java Hibernate多对多
  • python创建多维数组的3种方式:
    python创建多维数组的3种方式:#coding=utf-8 import numpy as np #1 image =[[(col+1)*(row+1) for col in range(5)] for row in range(3)...
    99+
    2023-01-31
    多维 数组 方式
  • 在MyBatis中实现一对多查询和多对一查询的方式详解(各两种方式)
    目录1、多对一1、1环境搭建1、2编写实体类、1、3编写接口方法1、4编写Mapper1、5实现1、6运行结果2、一对多2、1环境搭建和一对多一样2、2编写实体类2、3编写接口的方法...
    99+
    2024-04-02
  • Spring成员对象注入的三种方式详解
    目录一、@Autowired注解@Qualifier@Primary二、@Resource注解三、@Inject和@Named注解总结当一个类运行需要调用一个成员对象,成员对象也是被...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作