对django2.0 关联表的必填on_delete参数的含义解析


Posted in Python onAugust 09, 2019

一对多(ForeignKey)

class ForeignKey(ForeignObject):
  def __init__(self, to, on_delete, related_name=None, related_query_name=None,
         limit_choices_to=None, parent_link=False, to_field=None,
         db_constraint=True, **kwargs):
    super().__init__(to, on_delete, from_fields=['self'], to_fields=[to_field], **kwargs)

一对一(OneToOneField)

class OneToOneField(ForeignKey):
  def __init__(self, to, on_delete, to_field=None, **kwargs):
    kwargs['unique'] = True
    super().__init__(to, on_delete, to_field=to_field, **kwargs)

从上面外键(ForeignKey)和一对一(OneToOneField)的参数中可以看出,都有on_delete参数,而 django 升级到2.0之后,表与表之间关联的时候,必须要写on_delete参数,否则会报异常:

TypeError: __init__() missing 1 required positional argument: 'on_delete'

因此,整理一下on_delete参数的各个值的含义:

on_delete=None,        # 删除关联表中的数据时,当前表与其关联的field的行为
on_delete=models.CASCADE,   # 删除关联数据,与之关联也删除
on_delete=models.DO_NOTHING, # 删除关联数据,什么也不做
on_delete=models.PROTECT,   # 删除关联数据,引发错误ProtectedError
# models.ForeignKey('关联表', on_delete=models.SET_NULL, blank=True, null=True)
on_delete=models.SET_NULL,  # 删除关联数据,与之关联的值设置为null(前提FK字段需要设置为可空,一对一同理)
# models.ForeignKey('关联表', on_delete=models.SET_DEFAULT, default='默认值')
on_delete=models.SET_DEFAULT, # 删除关联数据,与之关联的值设置为默认值(前提FK字段需要设置默认值,一对一同理)
on_delete=models.SET,     # 删除关联数据,
 a. 与之关联的值设置为指定值,设置:models.SET(值)
 b. 与之关联的值设置为可执行对象的返回值,设置:models.SET(可执行对象)

多对多(ManyToManyField)

class ManyToManyField(RelatedField):
  def __init__(self, to, related_name=None, related_query_name=None,
         limit_choices_to=None, symmetrical=None, through=None,
         through_fields=None, db_constraint=True, db_table=None,
         swappable=True, **kwargs):
    super().__init__(**kwargs)

因为多对多(ManyToManyField)没有 on_delete 参数,所以略过不提.

以上这篇对django2.0 关联表的必填on_delete参数的含义解析就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python基于smtplib实现异步发送邮件服务
May 28 Python
python利用拉链法实现字典方法示例
Mar 25 Python
python按行读取文件,去掉每行的换行符\n的实例
Apr 19 Python
Python实现的质因式分解算法示例
May 03 Python
python 平衡二叉树实现代码示例
Jul 07 Python
Python运维开发之psutil库的使用详解
Oct 18 Python
python 返回列表中某个值的索引方法
Nov 07 Python
对python PLT中的image和skimage处理图片方法详解
Jan 10 Python
python爬虫之自制英汉字典
Jun 24 Python
Python pip配置国内源的方法
Feb 14 Python
python正则表达式 匹配反斜杠的操作方法
Aug 07 Python
浅析Django接口版本控制
Jun 26 Python
python实现美团订单推送到测试环境,提供便利操作示例
Aug 09 #Python
正则给header的冒号两边参数添加单引号(Python请求用)
Aug 09 #Python
基于django ManyToMany 使用的注意事项详解
Aug 09 #Python
Django在admin后台集成TinyMCE富文本编辑器的例子
Aug 09 #Python
python实现京东订单推送到测试环境,提供便利操作示例
Aug 09 #Python
利用ImageAI库只需几行python代码实现目标检测
Aug 09 #Python
python操作excel让工作自动化
Aug 09 #Python
You might like
抓取并下载CSS中所有图片文件的php代码
2011/09/26 PHP
php仿QQ验证码的实例分析
2013/07/01 PHP
PHP中使用asort进行中文排序失效的问题处理
2014/08/18 PHP
php实现的发送带附件邮件类实例
2014/09/22 PHP
微信公众平台接口开发入门示例
2014/12/24 PHP
PHP isset empty函数相关面试题及解析
2020/12/11 PHP
JavaScript中的console.time()函数详细介绍
2014/12/29 Javascript
JQuery选择器绑定事件及修改内容的方法
2015/01/23 Javascript
Node.js插件安装图文教程
2016/05/06 Javascript
浅析JS获取url中的参数实例代码
2016/06/14 Javascript
Thinkjs3新手入门之如何使用静态资源目录
2017/12/06 Javascript
js实现控制文件拖拽并获取拖拽内容功能
2018/02/17 Javascript
Node.js 使用jade模板引擎的示例
2018/05/11 Javascript
搭建vue开发环境
2018/07/19 Javascript
JSON.stringify()方法讲解
2019/01/31 Javascript
详解VScode编辑器vue环境搭建所遇问题解决方案
2019/04/26 Javascript
使vue实现jQuery调用的两种方法
2019/05/12 jQuery
vue-cli 3如何使用vue-bootstrap-datetimepicker日期插件
2021/02/20 Vue.js
[01:02]DOTA2辉夜杯决赛日 CDEC.Y对阵VG赛前花絮
2015/12/27 DOTA
[55:03]完美世界DOTA2联赛PWL S2 LBZS vs FTD.C 第二场 11.20
2020/11/20 DOTA
零基础写python爬虫之爬虫编写全记录
2014/11/06 Python
django自带调试服务器的使用详解
2019/08/29 Python
使用Pandas将inf, nan转化成特定的值
2019/12/19 Python
pandas的相关系数与协方差实例
2019/12/27 Python
浅谈spring boot 集成 log4j 解决与logback冲突的问题
2020/02/20 Python
TensorFlow打印输出tensor的值
2020/04/19 Python
Django修改app名称和数据表迁移方案实现
2020/09/17 Python
详解移动端html5页面长按实现高亮全选文本内容的兼容解决方案
2016/12/03 HTML / CSS
ebookers英国:隶属全球最大的在线旅游公司Expedia
2017/12/28 全球购物
两道JAVA笔试题
2016/09/14 面试题
单位实习证明怎么写
2014/01/17 职场文书
小学综治宣传月活动总结
2014/07/02 职场文书
2014县政府领导班子三严三实对照检查材料思想汇报
2014/09/26 职场文书
社区元宵节活动总结
2015/02/06 职场文书
清洁员岗位职责
2015/02/15 职场文书
2015年民主评议党员工作总结
2015/05/19 职场文书