• 企业400电话
  • 微网小程序
  • AI电话机器人
  • 电商代运营
  • 全 部 栏 目

    企业400电话 网络优化推广 AI电话机器人 呼叫中心 网站建设 商标✡知产 微网小程序 电商运营 彩铃•短信 增值拓展业务
    详解解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跨表查询(不建议使用)
    
    # 表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创建多对多表关系内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

    您可能感兴趣的文章:
    • 教你pycharm运行Django第一个项目
    • Django实现静态文件缓存到云服务的操作方法
    • Django动态展示Pyecharts图表数据的几种方法
    • Django将项目移动到新环境的操作步骤
    • Django零基础入门之路由path和re_path详解
    • Django零基础入门之模板变量详解
    上一篇:一些让Python代码简洁的实用技巧总结
    下一篇:Django动态展示Pyecharts图表数据的几种方法
  • 相关文章
  • 

    © 2016-2020 巨人网络通讯 版权所有

    《增值电信业务经营许可证》 苏ICP备15040257号-8

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