Django的models中on_delete参数详解

 更新时间:2019年07月16日 08:33:08   作者:lemon  
这篇文章主要介绍了Django的models中on_delete参数详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

在Django2.0以上的版本中,创建外键和一对一关系必须定义on_delete参数,我们可以在其源码中看到相关信息

class ForeignKey(ForeignObject):
  """
  Provide a many-to-one relation by adding a column to the local model
  to hold the remote value.

  By default ForeignKey will target the pk of the remote model but this
  behavior can be changed by using the ``to_field`` argument.
  """

  # Field flags
  many_to_many = False
  many_to_one = True
  one_to_many = False
  one_to_one = False

  rel_class = ManyToOneRel

  empty_strings_allowed = False
  default_error_messages = {
    'invalid': _('%(model)s instance with %(field)s %(value)r does not exist.')
  }
  description = _("Foreign Key (type determined by related field)")

  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):

  • to:关联的表
  • on_delete:当该表中的某条数据删除后,关联外键的操作
  • related_name:反查参数,设置后可以在被关联表中通过该字段反查外键所在表,默认:set_表名
  • to_field:默认主键,因为mysql只支持主键作为外键,就算你没显式的创建主键,Django会给你自动创建,如果你是DB-first,且没创建主键:数据库默认使用隐藏字段:DB_ROW_ID作为主键

on_delete参数设置

CASCADE:级联删除,当关联表中的数据删除时,该外键也删除

PROTECT: 保护模式,如果采用该选项,删除的时候,会抛出ProtectedError错误。

SET_NULL: 置空模式,删除的时候,外键字段被设置为空,前提就是blank=True, null=True,定义该字段的时候,允许为空。

SET_DEFAULT: 设置默认值,删除的时候,外键字段设置为默认值,所以定义外键的时候注意加上一个默认值。

SET(): 自定义一个值,该值当然只能是对应的实体

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • 对Pytorch神经网络初始化kaiming分布详解

    对Pytorch神经网络初始化kaiming分布详解

    今天小编就为大家分享一篇对Pytorch神经网络初始化kaiming分布详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • python 函数传参之传值还是传引用的分析

    python 函数传参之传值还是传引用的分析

    这篇文章主要介绍了python 函数传参之传值还是传引用的分析,需要的朋友可以参考下
    2017-09-09
  • 基于python实现数组格式参数加密计算

    基于python实现数组格式参数加密计算

    这篇文章主要介绍了基于python实现数组格式参数加密计算,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • Python SQLAlchemy简介及基本用法

    Python SQLAlchemy简介及基本用法

    SQLAlchemy是一个基于Python实现的ORM对象关系映射框架,该框架建立在DB API之上,使用关系对象映射进行数据库操作,这篇文章主要介绍了SQLAlchemy简介以及基本使用,需要的朋友可以参考下
    2023-08-08
  • Python自动安装第三方库的小技巧(pip使用详解)

    Python自动安装第三方库的小技巧(pip使用详解)

    很多朋友私信小编Python安装第三方库安装技巧,在这就不一一回复大家了,今天小编给大家分享一篇教程关于Python自动安装第三方库的小技巧,本文以安装plotly为例给大家详细讲解,感兴趣的朋友跟随小编一起看看吧
    2021-05-05
  • python语法之语言元素和分支循环结构详解

    python语法之语言元素和分支循环结构详解

    这篇文章主要介绍了Python的语言元素和分支循环结构,本文通过实例代码给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-10-10
  • Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作

    Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作

    Python3自带工具2to3.py 转换 Python2.x 代码到Python3的操作方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Python参数传递实现过程及原理详解

    Python参数传递实现过程及原理详解

    这篇文章主要介绍了Python参数传递实现过程及原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-05-05
  • 封装 Python 时间处理库创建自己的TimeUtil类示例

    封装 Python 时间处理库创建自己的TimeUtil类示例

    这篇文章主要为大家介绍了封装 Python 时间处理库创建自己的TimeUtil类示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步早日升职加薪
    2023-05-05
  • 使用Python实现为PDF文档设置和移除密码

    使用Python实现为PDF文档设置和移除密码

    在数字化时代,文档的安全性变得越来越重要,特别是对于包含敏感信息的PDF文件,所以本文主要来和大家介绍一下如何使用Python实现为PDF文档设置和移除密码,需要的可以参考下
    2024-03-03

最新评论