简单了解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之画圈还不简单吗?
Sep 20 Python
浅析Python基础-流程控制
Mar 18 Python
Python如何判断数独是否合法
Sep 08 Python
Python向日志输出中添加上下文信息
May 24 Python
git使用.gitignore设置不生效或不起作用问题的解决方法
Jun 01 Python
Python使用openpyxl读写excel文件的方法
Jun 30 Python
python3.5 email实现发送邮件功能
May 22 Python
python使用rpc框架gRPC的方法
Aug 24 Python
pyqt5使用按钮进行界面的跳转方法
Jun 19 Python
python绘制多个子图的实例
Jul 07 Python
简单了解django文件下载方式
Feb 10 Python
Python创建临时文件和文件夹
Aug 05 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 UTF8 文件的签名问题
2009/10/30 PHP
php 文本文件的读取效率
2012/02/10 PHP
Win2003+apache+PHP+SqlServer2008 配置生产环境
2014/07/29 PHP
php中文字符串截取方法实例总结
2014/09/30 PHP
7个鲜为人知却非常实用的PHP函数
2015/07/01 PHP
PHP通过反射动态加载第三方类和获得类源码的实例
2015/11/27 PHP
YII Framework框架教程之国际化实现方法
2016/03/14 PHP
Laravel 5.5官方推荐的Nginx配置学习教程
2017/10/06 PHP
PHP实现验证码校验功能
2017/11/16 PHP
JavaScript 浮点数运算 精度问题
2009/10/06 Javascript
使用Angular和Nodejs、socket.io搭建聊天室及多人聊天室
2015/08/21 NodeJs
基于javascript实现图片懒加载
2016/01/05 Javascript
JavaScript自学笔记(必看篇)
2016/06/23 Javascript
jquery dataview数据视图插件使用方法
2016/12/23 Javascript
Angular4如何自定义首屏的加载动画详解
2017/07/26 Javascript
vue点击当前路由高亮小案例
2019/09/26 Javascript
vue实现给div绑定keyup的enter事件
2020/07/31 Javascript
[35:43]2018DOTA2亚洲邀请赛 4.1 小组赛B组 paiN vs Effect
2018/04/03 DOTA
Python 字典(Dictionary)操作详解
2014/03/11 Python
python 删除非空文件夹的实例
2018/04/26 Python
详解python tkinter教程-事件绑定
2019/03/28 Python
python 通过可变参数计算n个数的乘积方法
2019/06/13 Python
python+selenium select下拉选择框定位处理方法
2019/08/24 Python
python实现简易淘宝购物
2019/11/22 Python
python+selenium定时爬取丁香园的新型冠状病毒数据并制作出类似的地图(部署到云服务器)
2020/02/09 Python
Python二元算术运算常用方法解析
2020/09/15 Python
HTML5页面音视频在微信和app下自动播放的实现方法
2016/10/20 HTML / CSS
大码女装:Ulla Popken
2019/08/06 全球购物
学生实习推荐信范文
2013/11/26 职场文书
护士自我鉴定总结
2014/03/24 职场文书
促销活动总结报告
2014/04/26 职场文书
岗位说明书标准范本
2014/07/30 职场文书
仙境之桥观后感
2015/06/16 职场文书
JavaScript中时间格式化新思路toLocaleString()
2021/11/07 Javascript
Docker 镜像介绍以及commit相关操作
2022/04/13 Servers
MySQL使用IF语句及用case语句对条件并结果进行判断 
2022/09/23 MySQL