简单了解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将IP地址在整型和字符串之间轻松转换
Mar 22 Python
django开发之settings.py中变量的全局引用详解
Mar 29 Python
python写一个md5解密器示例
Feb 23 Python
Python3 获取一大段文本之间两个关键字之间的内容方法
Oct 11 Python
Python实现对特定列表进行从小到大排序操作示例
Feb 11 Python
详解Python self 参数
Aug 30 Python
python创建学生成绩管理系统
Nov 22 Python
Python While循环语句实例演示及原理解析
Jan 03 Python
如何利用python发送邮件
Sep 26 Python
Pycharm中如何关掉python console
Oct 27 Python
Python代码覆盖率统计工具coverage.py用法详解
Nov 25 Python
python上下文管理的使用场景实例讲解
Mar 03 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运行SVN命令显示某用户的文件更新记录的代码
2014/01/03 PHP
php目录拷贝实现方法
2015/07/10 PHP
WordPress分页伪静态加html后缀
2016/06/08 PHP
PHP htmlentities()函数用法讲解
2019/02/25 PHP
js 省地市级联选择
2010/02/07 Javascript
精心挑选的12款优秀的基于jQuery的手风琴效果插件和教程
2012/08/22 Javascript
Jqgrid设置全选(选择)及获取选择行的值示例代码
2013/12/28 Javascript
js去除输入框中所有的空格和禁止输入空格的方法
2014/06/09 Javascript
通过伪协议解决父页面与iframe页面通信的问题
2015/04/05 Javascript
javascript父子页面通讯实例详解
2015/07/17 Javascript
jQuery事件绑定用法详解
2016/09/08 Javascript
JS文件上传神器bootstrap fileinput详解
2021/01/28 Javascript
JavaScript动态数量的文件上传控件
2016/11/18 Javascript
Ajax验证用户名或昵称是否已被注册
2017/04/05 Javascript
Node.js+ES6+dropload.js实现移动端下拉加载实例
2017/06/01 Javascript
利用js将ajax获取到的后台数据动态加载至网页中的方法
2018/08/08 Javascript
python实现批量改文件名称的方法
2015/05/25 Python
搞笑的程序猿:看看你是哪种Python程序员
2015/06/12 Python
使用Python读写文本文件及编写简单的文本编辑器
2016/03/11 Python
Python函数中的函数(闭包)用法实例
2016/03/15 Python
对numpy 数组和矩阵的乘法的进一步理解
2018/04/04 Python
Centos部署django服务nginx+uwsgi的方法
2019/01/02 Python
Python中如何将一个类方法变为多个方法
2019/12/30 Python
基于Python生成个性二维码过程详解
2020/03/05 Python
Bonami斯洛伐克:购买家具和家居饰品
2019/07/02 全球购物
Windows和Linux动态库应用异同
2016/04/17 面试题
生产车间主任的个人自我鉴定
2013/10/25 职场文书
联欢晚会主持词
2014/03/25 职场文书
门前三包责任书
2014/04/15 职场文书
纠纷协议书
2014/04/16 职场文书
公司担保书格式范文
2014/05/12 职场文书
秋季运动会开幕词
2015/01/28 职场文书
胡桃夹子观后感
2015/06/11 职场文书
实验心得体会范文
2016/01/25 职场文书
Python机器学习应用之工业蒸汽数据分析篇详解
2022/01/18 Python
windows系统安装配置nginx环境
2022/06/28 Servers