简单了解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装饰器原理与用法分析
Apr 30 Python
Sanic框架配置操作分析
Jul 17 Python
Python判断一个list中是否包含另一个list全部元素的方法分析
Dec 24 Python
python设计tcp数据包协议类的例子
Jul 23 Python
Python Django实现layui风格+django分页功能的例子
Aug 29 Python
python FTP批量下载/删除/上传实例
Dec 22 Python
linux 下python多线程递归复制文件夹及文件夹中的文件
Jan 02 Python
python Socket网络编程实现C/S模式和P2P
Jun 22 Python
conda安装tensorflow和conda常用命令小结
Feb 20 Python
python利用proxybroker构建爬虫免费IP代理池的实现
Feb 21 Python
Python绘制分类图的方法
Apr 20 Python
Python编程中内置的NotImplemented类型的用法
Mar 23 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
真正的ZIP文件操作类(php)
2007/07/21 PHP
php 数组的创建、调用和更新实现代码
2009/03/09 PHP
php获取mysql字段名称和其它信息的例子
2014/04/14 PHP
如何用PHP来实现一个动态Web服务器
2015/07/29 PHP
PHP对称加密算法(DES/AES)类的实现代码
2017/11/14 PHP
在 Laravel 6 中缓存数据库查询结果的方法
2019/12/11 PHP
Google Map API更新实现用户自定义标注坐标
2009/07/29 Javascript
jquery dialog open后,服务器端控件失效的快速解决方法
2013/12/19 Javascript
JS网页图片按比例自适应缩放实现方法
2014/01/15 Javascript
jquery提交form表单时禁止重复提交的方法
2014/02/13 Javascript
Jquery.Form 异步提交表单的简单实例
2014/03/03 Javascript
jQuery针对各类元素操作基础教程
2014/08/29 Javascript
JavaScript中对象property的删除方法介绍
2014/12/30 Javascript
JS正则RegExp.test()使用注意事项(不具有重复性)
2016/12/28 Javascript
jQuery插件HighCharts实现的2D对数饼图效果示例【附demo源码下载】
2017/03/09 Javascript
jquery ajax异步提交表单数据的方法
2017/10/27 jQuery
浅谈Vue.js中ref ($refs)用法举例总结
2017/12/19 Javascript
Vue Cli3 打包配置并自动忽略console.log语句的方法
2020/04/23 Javascript
python自定义解析简单xml格式文件的方法
2015/05/11 Python
python虚拟环境virualenv的安装与使用
2016/12/18 Python
对Python中一维向量和一维向量转置相乘的方法详解
2019/08/26 Python
python中执行smtplib失败的处理方法
2020/07/01 Python
如何通过命令行进入python
2020/07/06 Python
Jupyter Notebook安装及使用方法解析
2020/11/12 Python
Dr. Martens马汀博士德国官网:马丁靴鼻祖
2019/12/26 全球购物
创建索引时需要注意的事项
2013/05/13 面试题
英语道歉信范文
2014/01/09 职场文书
对祖国的寄语大全
2014/04/11 职场文书
转让协议书范本
2014/04/15 职场文书
学雷锋树新风演讲稿
2014/05/10 职场文书
普通党员对照检查材料
2014/08/28 职场文书
班子成员四风问题自我剖析材料
2014/09/29 职场文书
2014年语文教研组工作总结
2014/12/06 职场文书
神农溪导游词
2015/02/11 职场文书
幼儿园老师个人总结
2015/02/28 职场文书
win10频率超出范围怎么办?win10老显示超出工作频率范围的解决方法
2022/07/07 数码科技