简单了解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实现数组插入新元素的方法
May 22 Python
Python 文件处理注意事项总结
Apr 10 Python
python中reduce()函数的使用方法示例
Sep 29 Python
给你选择Python语言实现机器学习算法的三大理由
Nov 15 Python
python 3.7.0 下pillow安装方法
Aug 27 Python
pytorch 转换矩阵的维数位置方法
Dec 08 Python
python交换两个变量的值方法
Jan 12 Python
Python实现插入排序和选择排序的方法
May 12 Python
python3+PyQt5 创建多线程网络应用-TCP客户端和TCP服务器实例
Jun 17 Python
Python人工智能之路 之PyAudio 实现录音 自动化交互实现问答
Aug 13 Python
opencv 图像轮廓的实现示例
Jul 08 Python
Python tkinter制作单机五子棋游戏
Sep 14 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截取字符串函数substr,iconv_substr,mb_substr示例以及优劣分析
2014/06/10 PHP
PHP加密解密实例分析
2015/12/25 PHP
Yii2主题(Theme)用法详解
2016/07/23 PHP
SAE实时日志接口SDK用法示例
2016/10/09 PHP
正则表达式判断是否存在中文和全角字符和判断包含中文字符串长度
2008/09/27 Javascript
js中事件的处理与浏览器对象示例介绍
2013/11/29 Javascript
文本框倒叙输入让输入框的焦点始终在最开始的位置
2014/09/01 Javascript
Javascript将JSON日期格式化
2016/08/23 Javascript
javascript 分号总结及详细介绍
2016/09/24 Javascript
利用Javascript裁剪图片并存储的简单实现
2017/03/13 Javascript
vue-cli入门之项目结构分析
2017/04/20 Javascript
详解angular 中的自定义指令之详解API
2017/06/20 Javascript
详解webpack中的hash、chunkhash、contenthash区别
2018/01/05 Javascript
vue 每次渲染完页面后div的滚动条保持在最底部的方法
2018/03/17 Javascript
基于Vue2x实现响应式自适应轮播组件插件VueSliderShow功能
2018/05/16 Javascript
详解关于微信setData回调函数中的坑
2019/02/18 Javascript
node.js监听文件变化的实现方法
2019/04/17 Javascript
利用Python的Django框架生成PDF文件的教程
2015/07/22 Python
Python实现线程状态监测简单示例
2018/03/28 Python
Pandas 按索引合并数据集的方法
2018/11/15 Python
Django文件存储 自己定制存储系统解析
2019/08/02 Python
python 中值滤波,椒盐去噪,图片增强实例
2019/12/18 Python
浅谈Html5页面打开app的一些思考
2020/03/30 HTML / CSS
美国乡村商店:Plow & Hearth
2016/09/12 全球购物
旧时光糖果:Old Time Candy
2018/02/05 全球购物
拉斯维加斯酒店、演出、旅游、俱乐部及更多:Vegas.com
2019/02/28 全球购物
新手上路标语
2014/06/20 职场文书
建筑工程技术专业求职信
2014/07/16 职场文书
无犯罪记录证明
2014/09/19 职场文书
离婚被告答辩状
2015/05/22 职场文书
教研活动主持词
2015/07/03 职场文书
课改心得体会范文
2016/01/25 职场文书
《草船借箭》教学反思
2016/02/23 职场文书
PhpSpreadsheet中文文档 | Spreadsheet操作教程实例
2021/04/01 PHP
python数字类型和占位符详情
2022/03/13 Python
html中两种获取标签内的值的方法
2022/06/10 HTML / CSS