简单了解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生成随机验证码的两种方法
Dec 22 Python
Python 数据结构之队列的实现
Jan 22 Python
Python判断两个对象相等的原理
Dec 12 Python
Python实现的生成格雷码功能示例
Jan 24 Python
Python 网络爬虫--关于简单的模拟登录实例讲解
Jun 01 Python
python实现的分析并统计nginx日志数据功能示例
Dec 21 Python
ubuntu 安装pyqt5和卸载pyQt5的方法
Mar 24 Python
Python ini文件常用操作方法解析
Apr 26 Python
Keras实现将两个模型连接到一起
May 23 Python
Python之字典对象的几种创建方法
Sep 30 Python
python基础之//、/与%的区别详解
Jun 10 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
PHP4实际应用经验篇(1)
2006/10/09 PHP
php实现encode64编码类实例
2015/03/24 PHP
Yii控制器中操作视图js的方法
2016/07/04 PHP
PHP常用的类封装小结【4个工具类】
2019/06/28 PHP
一句话JavaScript表单验证代码
2009/08/02 Javascript
jquery keypress,keyup,onpropertychange键盘事件
2010/06/25 Javascript
Extjs NumberField后面加单位实现思路
2013/07/30 Javascript
jQuery列表拖动排列具体实现
2013/11/04 Javascript
jquery 设置元素相对于另一个元素的top值(实例代码)
2013/11/06 Javascript
JavaScript也谈内存优化
2014/06/06 Javascript
JavaScript实现将xml转换成html table表格的方法
2015/04/17 Javascript
JS实现统计复选框选中个数并提示确定与取消的方法
2015/07/01 Javascript
使用javascript插入样式
2016/03/14 Javascript
图文详解Heap Sort堆排序算法及JavaScript的代码实现
2016/05/04 Javascript
Bootstrap源码解读网格系统(3)
2016/12/22 Javascript
ionic2 tabs 图标自定义实例
2017/03/08 Javascript
vue2 自定义动态组件所遇到的问题
2017/06/08 Javascript
js实现关闭网页出现是否离开提示
2017/12/07 Javascript
vue.js 嵌套循环、if判断、动态删除的实例
2018/03/07 Javascript
利用npm 安装删除模块的方法
2018/05/15 Javascript
基于vue-router 多级路由redirect 重定向的问题
2018/09/03 Javascript
JavaScript实现移动端拖动元素
2020/11/24 Javascript
Python中Django框架下的staticfiles使用简介
2015/05/30 Python
python3 mmh3安装及使用方法
2019/10/09 Python
浅谈Python中os模块及shutil模块的常规操作
2020/04/03 Python
深入了解Python 变量作用域
2020/07/24 Python
美国知名运动产品零售商:Foot Locker
2016/07/23 全球购物
Exoticca英国:以最优惠的价格提供豪华异国情调旅行
2018/10/18 全球购物
公司庆典活动邀请函
2014/01/09 职场文书
银行优秀员工事迹
2014/02/06 职场文书
网站创业计划书
2014/04/30 职场文书
2014审计局领导班子民主生活会对照检查材料思想汇报
2014/09/20 职场文书
公司行政助理岗位职责
2015/04/11 职场文书
委托收款证明
2015/06/23 职场文书
2016年寒假社会实践活动心得体会
2015/10/09 职场文书
python如何利用traceback获取详细的异常信息
2021/06/05 Python