这篇文章主要讲解了“Django多对多表关系的创建方式”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Django多对多表关系的创建方式”吧!
1、方式一:自动创建
2、方式二:纯手动创建
3、方式三:半自动创建
# 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)
# 这种方式无法通过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)
# 可扩展性高,并且能够符合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多对多表关系的创建方式这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是亿速云,小编将为大家推送更多相关知识点的文章,欢迎关注!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。