简单了解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正则表达式去掉数字中的逗号(python正则匹配逗号)
Dec 25 Python
Tensorflow的可视化工具Tensorboard的初步使用详解
Feb 11 Python
Python基础教程之利用期物处理并发
Mar 29 Python
Python实现多线程的两种方式分析
Aug 29 Python
python程序运行进程、使用时间、剩余时间显示功能的实现代码
Jul 11 Python
Apache部署Django项目图文详解
Jul 30 Python
浅谈Python中(&,|)和(and,or)之间的区别
Aug 07 Python
PyQt+socket实现远程操作服务器的方法示例
Aug 22 Python
python3 反射的四种基本方法解析
Aug 26 Python
Python如何执行精确的浮点数运算
Jul 31 Python
Python虚拟环境virtualenv创建及使用过程图解
Dec 08 Python
python实战之90行代码写个猜数字游戏
Apr 22 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实现ODBC数据分页显示一例
2006/10/09 PHP
PHP中的Streams详细介绍
2014/11/12 PHP
PHP中spl_autoload_register()函数用法实例详解
2016/07/18 PHP
PHP 文件写入和读取操作实例详解【必看篇】
2019/11/04 PHP
js调用css属性写法
2013/09/21 Javascript
js中的this关键字详解
2013/09/25 Javascript
jQuery对下拉框,单选框,多选框的操作
2014/02/21 Javascript
node.js中的fs.linkSync方法使用说明
2014/12/15 Javascript
使用jQuery实现图片遮罩半透明坠落遮挡
2015/03/16 Javascript
Vuejs第六篇之Vuejs与form元素实例解析
2016/09/05 Javascript
JS简单封装的图片无缝滚动效果示例【测试可用】
2017/03/22 Javascript
微信小程序实现收藏与取消收藏切换图片功能
2018/08/03 Javascript
教你如何编写Vue.js的单元测试的方法
2018/10/17 Javascript
Bootstrap 实现表格样式、表单布局的实例代码
2018/12/09 Javascript
解决echarts的多个折现数据出现坐标和值对不上的问题
2018/12/28 Javascript
原生JS实现逼真的图片3D旋转效果详解
2019/02/16 Javascript
vue插槽slot的理解和使用方法
2019/04/03 Javascript
如何自动化部署项目?折腾服务器之旅~
2019/04/16 Javascript
js构造函数constructor和原型prototype原理与用法实例分析
2020/03/02 Javascript
Python下载网络文本数据到本地内存的四种实现方法示例
2018/02/05 Python
基于Python中求和函数sum的用法详解
2018/06/28 Python
Django Sitemap 站点地图的实现方法
2019/04/29 Python
详解python实现交叉验证法与留出法
2019/07/11 Python
Python下opencv图像阈值处理的使用笔记
2019/08/04 Python
Python +Selenium解决图片验证码登录或注册问题(推荐)
2020/02/09 Python
利用CSS3实现炫酷的飞机起飞动画
2016/09/17 HTML / CSS
护理工作感言
2014/01/16 职场文书
如何编写优秀的食品项目创业计划书
2014/01/23 职场文书
社区七一党员活动方案
2014/01/25 职场文书
副处级干部考察材料
2014/05/17 职场文书
毕业生应聘求职信
2014/07/10 职场文书
2014年纪检监察工作总结
2014/11/11 职场文书
先进基层党组织事迹材料
2014/12/25 职场文书
电影焦裕禄观后感
2015/06/09 职场文书
暂住证明怎么写
2015/06/19 职场文书
python 用递归实现通用爬虫解析器
2021/04/16 Python