简单了解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 相关文章推荐
flask中使用SQLAlchemy进行辅助开发的代码
Feb 10 Python
Python实现配置文件备份的方法
Jul 30 Python
python dict 字典 以及 赋值 引用的一些实例(详解)
Jan 20 Python
python3实现全角和半角字符转换的方法示例
Sep 21 Python
python enumerate函数的使用方法总结
Nov 15 Python
matplotlib绘制动画代码示例
Jan 02 Python
详解Python判定IP地址合法性的三种方法
Mar 06 Python
Python调用C++,通过Pybind11制作Python接口
Oct 16 Python
浅谈python 导入模块和解决文件句柄找不到问题
Dec 15 Python
python正则表达式去除两个特殊字符间的内容方法
Dec 24 Python
从列表或字典创建Pandas的DataFrame对象的方法
Jul 06 Python
修改Pandas的行或列的名字(重命名)
Dec 18 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环境――Appserv
2006/12/13 PHP
在php MYSQL中插入当前时间
2008/04/06 PHP
Zend Framework 2.0事件管理器(The EventManager)入门教程
2014/08/11 PHP
JSON字符串传到后台PHP处理问题的解决方法
2016/06/05 PHP
javascript 数组排序函数
2009/08/20 Javascript
基于Jquery的跨域传输数据(JSONP)
2011/03/10 Javascript
js复制网页内容并兼容各主流浏览器的代码
2013/12/17 Javascript
Nodejs Post请求报socket hang up错误的解决办法
2014/09/25 NodeJs
javascript使用switch case实现动态改变超级链接文字及地址
2014/12/16 Javascript
原生js实现百叶窗效果及原理介绍
2016/04/12 Javascript
AngularJS入门教程之控制器详解
2016/07/27 Javascript
原生js代码实现图片放大境效果
2016/10/30 Javascript
微信小程序实现红包雨功能
2018/07/11 Javascript
Vue中使用的EventBus有生命周期
2018/07/12 Javascript
怎样使你的 JavaScript 代码简单易读(推荐)
2019/04/16 Javascript
微信小程序Echarts覆盖正常组件问题解决
2019/07/13 Javascript
vue.js实现照片放大功能
2020/06/23 Javascript
[48:39]Ti4主赛事胜者组第一天 EG vs NEWBEE 2
2014/07/19 DOTA
python通过pil模块获得图片exif信息的方法
2015/03/16 Python
Python使用Flask框架获取当前查询参数的方法
2015/03/21 Python
简单实现python爬虫功能
2015/12/31 Python
基于Python 的进程管理工具supervisor使用指南
2016/09/18 Python
利用Python中的pandas库对cdn日志进行分析详解
2017/03/07 Python
Python简单实现控制电脑的方法
2018/01/22 Python
Python实现监控键盘鼠标操作示例【基于pyHook与pythoncom模块】
2018/09/04 Python
python try 异常处理(史上最全)
2019/03/07 Python
python操作小程序云数据库实现简单的增删改查功能
2019/06/06 Python
python读取图片的几种方式及图像宽和高的存储顺序
2020/02/11 Python
HTML5 canvas画图并保存成图片的jcanvas插件
2014/01/17 HTML / CSS
泰国最新活动和优惠:Megatix
2020/05/07 全球购物
白酒市场营销方案
2014/02/25 职场文书
文明美德伴我成长演讲稿
2014/05/12 职场文书
养成教育经验材料
2014/05/26 职场文书
因工资原因离职的辞职信范文
2015/05/12 职场文书
八年级作文之友情
2019/11/25 职场文书
TV动画《间谍过家家》公开PV
2022/03/20 日漫