简单了解django orm中介模型


Posted in Python onJuly 30, 2019

什么是中介模型

中介模型针对的是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会自动帮我们创建地上那张表,如下:

简单了解django orm中介模型

中介模型小示例

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 orm中介模型

图中可以看出,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 方法

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python Web框架Flask信号机制(signals)介绍
Jan 01 Python
python内存管理分析
Apr 08 Python
举例讲解Python中的算数运算符的用法
May 13 Python
Python实现将数据框数据写入mongodb及mysql数据库的方法
Apr 02 Python
Python3操作Excel文件(读写)的简单实例
Sep 02 Python
python制作英语翻译小工具代码实例
Sep 09 Python
将matplotlib绘图嵌入pyqt的方法示例
Jan 08 Python
PyPDF2读取PDF文件内容保存到本地TXT实例
May 12 Python
实现ECharts双Y轴左右刻度线一致的例子
May 16 Python
详解tensorflow2.x版本无法调用gpu的一种解决方法
May 25 Python
Python3爬虫中pyspider的安装步骤
Jul 29 Python
pandas参数设置的实用小技巧
Aug 23 Python
Python爬虫学习之翻译小程序
Jul 30 #Python
安装docker-compose的两种最简方法
Jul 30 #Python
Django的性能优化实现解析
Jul 30 #Python
Python爬虫学习之获取指定网页源码
Jul 30 #Python
django-初始配置(纯手写)详解
Jul 30 #Python
django 单表操作实例详解
Jul 30 #Python
Apache部署Django项目图文详解
Jul 30 #Python
You might like
PHP根据传入参数合并多个JS和CSS文件的简单实现
2014/06/13 PHP
PHP上传文件参考配置大文件上传
2015/12/16 PHP
Codeigniter中集成smarty和adodb的方法
2016/03/04 PHP
JQuery操作单选按钮以及复选按钮示例
2013/09/23 Javascript
javascript实现类似超链接的效果
2014/12/26 Javascript
jQuery右下角旋转环状菜单特效代码
2015/08/10 Javascript
JavaScript基础篇(3)之Object、Function等引用类型
2015/11/30 Javascript
浅谈如何实现easyui的datebox格式化
2016/06/12 Javascript
jQuery代码性能优化的10种方法
2016/06/21 Javascript
jQuery实现两列等高并自适应高度
2016/12/22 Javascript
vue2.0使用Sortable.js实现的拖拽功能示例
2017/02/21 Javascript
10道典型的JavaScript面试题
2017/03/22 Javascript
Bootstrap 3浏览器兼容性问题及解决方案
2017/04/11 Javascript
Javascript 实现匿名递归的实例代码
2017/05/25 Javascript
利用Vue.js实现求职在线之职位查询功能
2017/07/03 Javascript
微信小程序 转发功能的实现
2017/08/04 Javascript
postman+json+springmvc测试批量添加实例
2018/03/31 Javascript
vue 实现强制类型转换 数字类型转为字符串
2019/11/07 Javascript
[18:20]DOTA2 HEROS教学视频教你分分钟做大人-昆卡
2014/06/11 DOTA
[40:05]DOTA2上海特级锦标赛A组小组赛#1 EHOME VS MVP.Phx第一局
2016/02/25 DOTA
Python学习教程之常用的内置函数大全
2017/07/14 Python
python模块之sys模块和序列化模块(实例讲解)
2017/09/13 Python
python 实时得到cpu和内存的使用情况方法
2018/06/11 Python
python3的输入方式及多组输入方法
2018/10/17 Python
python通过实例讲解反射机制
2019/10/17 Python
浅谈Python3识别判断图片主要颜色并和颜色库进行对比的方法
2019/10/25 Python
如何用python写个模板引擎
2021/01/14 Python
CSS3 实现弹幕的示例代码
2017/08/07 HTML / CSS
德国知名健康零食网上商店:Seeberger
2017/07/27 全球购物
美国著名的户外用品品牌:L.L.Bean
2018/01/05 全球购物
汽车技术服务与营销专业推荐信
2013/11/29 职场文书
网吧收银员岗位职责
2013/12/14 职场文书
售房委托书
2014/08/30 职场文书
初中生旷课检讨书范文
2014/10/06 职场文书
老兵退伍标语
2014/10/07 职场文书
2016元旦文艺汇演主持词
2015/07/06 职场文书