简单了解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下paramiko模块实现ssh连接登录Linux服务器
Jun 03 Python
关于Python数据结构中字典的心得
Dec 04 Python
Python爬虫信息输入及页面的切换方法
May 11 Python
Python实现读取SQLServer数据并插入到MongoDB数据库的方法示例
Jun 09 Python
Python数据集切分实例
Dec 08 Python
对python当中不在本路径的py文件的引用详解
Dec 15 Python
python实现一行输入多个值和一行输出多个值的例子
Jul 16 Python
PyQt5高级界面控件之QTableWidget的具体使用方法
Feb 23 Python
python GUI库图形界面开发之PyQt5 UI主线程与耗时线程分离详细方法实例
Feb 26 Python
python修改linux中文件(文件夹)的权限属性操作
Mar 05 Python
django实现模板中的字符串文字和自动转义
Mar 31 Python
使用Python提取文本中含有特定字符串的方法示例
Dec 09 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中“简单工厂模式”实例代码讲解
2012/09/04 PHP
PHP根据IP判断地区名信息的示例代码
2014/03/03 PHP
PHP扩展程序实现守护进程
2015/04/16 PHP
在laravel5.2中实现点击用户头像更改头像的方法
2019/10/14 PHP
使用firebug进行调试javascript的示例
2013/12/16 Javascript
JQuery中$(document)是什么意思有什么作用
2014/07/21 Javascript
JavaScript中数组去除重复的三种方法
2016/04/22 Javascript
javascript和jquery实现用户登录验证
2016/05/04 Javascript
微信小程序 WXML、WXSS 和JS介绍及详解
2016/10/08 Javascript
浅谈jQuery hover(over, out)事件函数
2016/12/03 Javascript
javascript正则表达式模糊匹配IP地址功能示例
2017/01/06 Javascript
Nodejs调用Dll模块的方法
2018/09/17 NodeJs
Vue中插入HTML代码的方法
2018/09/21 Javascript
jQuery实现的3D版图片轮播示例【滑动轮播】
2019/01/18 jQuery
vue如何截取字符串
2019/05/06 Javascript
微信小程序静默登录的实现代码
2020/01/08 Javascript
微信小程序pinker组件使用实现自动相减日期
2020/05/07 Javascript
微信小程序自定义底部弹出框功能
2020/11/18 Javascript
[40:27]完美世界DOTA2联赛PWL S3 PXG vs GXR 第一场 12.19
2020/12/24 DOTA
5种Python单例模式的实现方式
2016/01/14 Python
python读取csv文件并把文件放入一个list中的实例讲解
2018/04/27 Python
详解Python Matplot中文显示完美解决方案
2019/03/07 Python
python微信撤回监测代码
2019/04/29 Python
解决Django layui {{}}冲突的问题
2019/08/29 Python
实现Python与STM32通信方式
2019/12/18 Python
Python语言异常处理测试过程解析
2020/01/08 Python
社区十八大感言
2014/01/19 职场文书
仓库管理制度
2014/01/21 职场文书
五年级数学教学反思
2014/02/11 职场文书
项目总经理岗位职责
2014/02/14 职场文书
关于梦想的演讲稿
2014/05/05 职场文书
大学生村官个人对照检查材料(群众路线)
2014/09/26 职场文书
个人先进事迹材料
2014/12/29 职场文书
党员转正申请报告
2015/05/15 职场文书
详解python网络进程
2021/06/15 Python
Mysql中有关Datetime和Timestamp的使用总结
2021/12/06 MySQL