对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的常见命令注入威胁
Feb 18 Python
python strip()函数 介绍
May 24 Python
Python基于pygame实现的弹力球效果(附源码)
Nov 11 Python
Python字符串拼接的几种方法整理
Aug 02 Python
python中的变量如何开辟内存
Jun 26 Python
Python删除n行后的其他行方法
Jan 28 Python
django rest framework vue 实现用户登录详解
Jul 29 Python
django创建最简单HTML页面跳转方法
Aug 16 Python
Pycharm连接远程服务器过程图解
Apr 30 Python
django rest framework 自定义返回方式
Jul 12 Python
Pytest如何使用skip跳过执行测试
Aug 13 Python
Python创建文件夹与文件的快捷方法
Dec 08 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
简化php模板页面中分页代码的解析
2009/02/06 PHP
yii用户注册表单验证实例
2015/12/26 PHP
Zend Framework教程之视图组件Zend_View用法详解
2016/03/05 PHP
PHP命名空间(namespace)原理与用法详解
2019/12/11 PHP
js 巧妙去除数组中的重复项
2010/01/25 Javascript
避免回车键导致的页面无意义刷新的解决方法
2011/04/12 Javascript
基于JQuery实现CheckBox全选全不选
2011/06/27 Javascript
in.js 一个轻量级的JavaScript颗粒化模块加载和依赖关系管理解决方案
2011/07/26 Javascript
jQuery中用dom操作替代正则表达式
2014/12/29 Javascript
JavaScript检测并限制复选框选中个数的方法
2015/08/12 Javascript
JavaScript使用DeviceOne开发实战(一) 配置和起步
2015/12/01 Javascript
再谈JavaScript异步编程
2016/01/27 Javascript
使用jQuery5分钟快速搞定双色表格的简单实例
2016/08/08 Javascript
JS 根据子网掩码,网关计算出所有IP地址范围示例
2020/04/23 Javascript
jquery判断页面网址是否有效的两种方法
2016/12/11 Javascript
ajax实现动态下拉框示例
2017/01/10 Javascript
vue里面父组件修改子组件样式的方法
2018/02/03 Javascript
JavaScript防止全局变量污染的方法总结
2018/08/02 Javascript
vue created钩子函数与mounted钩子函数的用法区别
2020/11/05 Javascript
[39:46]完美世界DOTA2联赛PWL S2 LBZS vs Rebirth 第二场 11.25
2020/11/25 DOTA
python正则实现提取电话功能
2018/02/24 Python
python实现NB-IoT模块远程控制
2018/06/20 Python
Win10下python3.5和python2.7环境变量配置教程
2018/09/18 Python
Python过滤txt文件内重复内容的方法
2018/10/21 Python
Python 装饰器@,对函数进行功能扩展操作示例【开闭原则】
2019/10/17 Python
查看已安装tensorflow版本的方法示例
2020/04/19 Python
python中判断文件结束符的具体方法
2020/08/04 Python
ProBikeKit新西兰:自行车套件,跑步和铁人三项装备
2017/04/05 全球购物
英国性感内衣和睡衣品牌:Bluebella
2018/01/26 全球购物
自荐信要包含哪些内容
2013/11/06 职场文书
新闻系毕业生推荐信
2013/11/16 职场文书
大学生的自我鉴定范文
2014/01/21 职场文书
护士医德医风自我评价
2014/09/15 职场文书
小学教师见习总结
2015/06/23 职场文书
记者节感言
2015/08/03 职场文书
《社戏》教学反思
2016/02/22 职场文书