• orm之中介模型


    Orm之中介模型

     

     

    什么是中介模型

    中介模型针对的是ManyToMany(多对多)的时候第三张表的问题,

    中介模型其实指的就是我们不通过Django创建第三张表,如果自己不创建第三张表,而是由django给我们创建,那就不存在中介模型

    中介模型示例

    普通的ManyToMany示例

    class Book(models.Model):
        title = models.CharField(max_length=32)
        authors = models.ManyToManyField(to='Author')
    
    class Author(models.Model):
        name = models.CharField(max_length=32)
    

    这时候Django会自动帮我们创建地上那张表,如下:

    中介模型小示例

    class Book(models.Model):
        ''''''
        title = models.CharField(max_length=32)
        authors = models.ManyToManyField(to='Author',through='Book2Author')
    
    class Author(models.Model):
        name = models.CharField(max_length=32)
    
    class Book2Author(models.Model):
        book_id = models.ForeignKey(to='Book')
        author_id = models.ForeignKey(to='Author')
    

    这时候运行manage命令后就会生成一张第三张表,如下:

    图中可以看出,Django创建ForeignKey的时候会在字段后自动添加'_id',所以,我们在写第三张表字段的时候就不用加_id了,如下:

    class Book(models.Model):
        ''''''
        title = models.CharField(max_length=32)
        authors = models.ManyToManyField(to='Author',through='Book2Author')
    
    class Author(models.Model):
        name = models.CharField(max_length=32)
    
    class Book2Author(models.Model):
        book_id = models.ForeignKey(to='Book')
        author_id = models.ForeignKey(to='Author')

    中介模型与Django自建表的区别

    1、中介模型的第三张表是自己创建的,所以可以自己任意添加额外的字段,而Django自创建的第三张表的字段是固定的

    2、中介模型没有add,set  , remove,clear 方法

     
     
     
     
     
     
  • 相关阅读:
    oracle 10g 免安装客户端在windows下配置
    sql2005 sa密码
    使用windows live writer 有感
    windows xp SNMP安装包提取
    汉化groove2007
    迁移SQL server 2005 Reporting Services到SQL server 2008 Reporting Services全程截图操作指南
    foxmail 6在使用中的问题
    AGPM客户端连接不上服务器解决一例
    SpringSource Tool Suite add CloudFoundry service
    Java 之 SWing
  • 原文地址:https://www.cnblogs.com/taosiyu/p/11244175.html
Copyright © 2020-2023  润新知