您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:详解解Django 多对多表关系的三种创建方式

51自学网 2021-10-30 22:19:01
  python
这篇教程详解解Django 多对多表关系的三种创建方式写得很实用,希望能帮到您。

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跨表查询(不建议使用)# 表1class Book(models.Model):    name = models.CharField(max_length=32)# 表2class Author(models.Model):    name = models.CharField(max_length=32)# 表3class 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创建多对多表关系内容请搜索51zixue.net以前的文章或继续浏览下面的相关文章希望大家以后多多支持51zixue.net!


一些让Python代码简洁的实用技巧总结
Django动态展示Pyecharts图表数据的几种方法
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。