简单了解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 数据结构之队列的实现
Jan 22 Python
Python中turtle作图示例
Nov 15 Python
Django的分页器实例(paginator)
Dec 01 Python
详解PyCharm配置Anaconda的艰难心路历程
Aug 13 Python
Python一句代码实现找出所有水仙花数的方法
Nov 13 Python
Python实现平行坐标图的两种方法小结
Jul 04 Python
Python使用__new__()方法为对象分配内存及返回对象的引用示例
Sep 20 Python
Django 实现外键去除自动添加的后缀‘_id’
Nov 15 Python
使用Tensorflow将自己的数据分割成batch训练实例
Jan 20 Python
PyCharm 在Windows的有用快捷键详解
Apr 07 Python
python3跳出一个循环的实例操作
Aug 18 Python
改变 Python 中线程执行顺序的方法
Sep 24 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 Imagick获取图片RGB颜色值
2014/07/28 PHP
Laravel框架表单验证详解
2014/09/04 PHP
php调整服务器时间的方法
2015/04/03 PHP
PHP文件生成的图片无法使用CDN缓存的解决方法
2015/06/20 PHP
PHP 下载文件时如何自动添加bom头及解释BOM头和去掉bom头的方法
2016/01/04 PHP
PHP版微信第三方实现一键登录及获取用户信息的方法
2016/10/14 PHP
PHP变量的作用范围实例讲解
2020/12/22 PHP
JQuery 初体验(建议学习jquery)
2009/04/25 Javascript
基于json的jquery地区联动效果代码
2011/07/06 Javascript
javascript作用域和闭包使用详解
2014/04/25 Javascript
jQuery打印图片pdf、txt示例代码
2014/07/22 Javascript
JavaScript中用于四舍五入的Math.round()方法讲解
2015/06/15 Javascript
jquery分割字符串的方法
2015/06/24 Javascript
jQuery检测某个元素是否存在代码分享
2015/07/09 Javascript
解析jQueryEasyUI的使用
2016/11/22 Javascript
基于vue.js实现侧边菜单栏
2017/03/20 Javascript
JS中Object对象的原型概念基础
2018/01/29 Javascript
Python装饰器decorator用法实例
2014/11/10 Python
python计算列表内各元素的个数实例
2018/06/29 Python
在python中按照特定顺序访问字典的方法详解
2018/12/14 Python
Python基于滑动平均思想实现缺失数据填充的方法
2019/02/21 Python
Python如何调用JS文件中的函数
2019/08/16 Python
python导入不同目录下的自定义模块过程解析
2019/11/18 Python
pytorch逐元素比较tensor大小实例
2020/01/03 Python
基于TensorFlow中自定义梯度的2种方式
2020/02/04 Python
Keras load_model 导入错误的解决方式
2020/06/09 Python
python UDF 实现对csv批量md5加密操作
2021/01/01 Python
Falconeri美国官网:由羊绒和羊毛制成的针织服装
2018/04/08 全球购物
单位在职证明书
2014/09/11 职场文书
2014年工作总结与下年工作计划
2014/11/27 职场文书
公司仓管员岗位职责
2015/04/01 职场文书
普通员工辞职信范文
2015/05/12 职场文书
吴仁宝观后感
2015/06/09 职场文书
实习报告范文
2019/07/30 职场文书
SQL Server基本使用和简单的CRUD操作
2021/04/05 SQL Server
用Python实现Newton插值法
2021/04/17 Python