前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Orm之中介模型

Orm之中介模型

作者头像
人生不如戏
发布2018-04-12 11:27:24
8050
发布2018-04-12 11:27:24
举报
文章被收录于专栏:抠抠空间抠抠空间

什么是中介模型

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

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

中介模型示例

普通的ManyToMany示例

代码语言:javascript
复制
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会自动帮我们创建地上那张表,如下:

中介模型小示例

代码语言:javascript
复制
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了,如下:

代码语言:javascript
复制
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 方法

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2018-04-11 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 什么是中介模型
  • 中介模型示例
    • 普通的ManyToMany示例
      • 中介模型小示例
      • 中介模型与Django自建表的区别
      相关产品与服务
      数据库
      云数据库为企业提供了完善的关系型数据库、非关系型数据库、分析型数据库和数据库生态工具。您可以通过产品选择和组合搭建,轻松实现高可靠、高可用性、高性能等数据库需求。云数据库服务也可大幅减少您的运维工作量,更专注于业务发展,让企业一站式享受数据上云及分布式架构的技术红利!
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档