Django on_delete (Django on_delete 语法)17

作者 : 慕源网 本文共2361个字,预计阅读时间需要6分钟 发布时间: 2021-11-21 共617人阅读

本文是Django教程的一部分,您可以点击Django教程系列查看所有教程。

Django on_delete 简介

以下文章提供了 Django on_delete 的大纲。Django 的主要优势之一是它能够对数据库进行更改。可以非常灵活地处理基于 Django 框架的应用程序的后端,所有的数据库添加、删除、甚至更新等过程都可以非常灵活地通过 Django 模型来执行。数据库中的更改也可以以简单的方式与模型集成。on delete 是控制 Django 提供的这种灵活性的参数之一。这是django建立关系时放置的参数之一,这意味着on delete函数可以灵活地操作外键。

因此,每当类似外键的概念出现时,这些删除参数应该被声明为外键中使用的参数之一。这些 ondelete 参数决定在删除引用的对象或父值时是否必须进行删除或需要遵循什么。这意味着当引用的外键值被删除时,需要对引用主键的表产生影响的是 Django 删除参数中提到的上下文。像这样的选项为面向数据库的操作提供了很大程度的灵活性。

Django on_delete 的语法

下面给出了 Django on_delete 的语法:

Field Name = models.ForeignKey(WASD, on_delete = OPERATION TYPE)
  • 这里最左边的值代表将要在reference中创建的字段,这意味着将用于在后台引用此操作的字段,因此以前用作引用字段的字段或将要创建的字段这里需要提到从父字段中提取数据的行为。这将是进一步考虑框架的领域。在数据库术语中,左端给出的字段将作为继承外键字段值的字段。
  • 接下来models.Foreignkey 是提到这个操作是外键创建操作的函数。此函数调用是必须使用的项。它提到预计将在本节中进一步创建外键。语法意味着从模型程序中调用和使用外键函数。必须在这些函数名称旁边放置参数。从 Django 的角度来看,这个函数调用是一个预定义的函数调用。让我们讨论进一步使用的参数。
  • 在models.Foreignkey 函数调用之后需要提到函数的参数。这就是 on_delete 方法发挥作用的地方。首先 WASD 参数代表预期被继承的外键,接下来将使用 on_delete 函数。on_delete 函数将其等同于与其关联的各种选项。

on_delete 选项

下面给出了 on_delete 参数的各种选项:

1.CASCADE

当 on_delete 参数设置为cascade 时,删除引用的对象将对引用的对象产生重大影响。这意味着当从数据库中删除引用的对象时,该对象的所有条目也将从整个数据库中删除。这就是 CASCADE 选项在后台工作的方式。因此,就 CASCADE 选项而言,对数据完整性有一些影响。

2.PROTECT

PROTECT 与cascade 选项正好相反,这里如果对实际对象有影响,则不会删除引用对象上的所有数据实例。因此,不会发生删除。这使得在对引用对象进行删除处理之前要保护数据。

3.RESTRICT

RESTRICT 与 PROTECT 选项非常相似,它的作用与删除选项相同。这里唯一的区别是当删除针对引用的对象时,ON_DELETE 将引发称为 RestrictedError 的错误。但是当引用对象和被引用对象的对象被分配了对不同公共对象的引用时,RESTRICT 将允许删除发生,然后允许删除。

4. SET_NULL

该选项的功能与名称所暗示的方式相同,当引用对象发生删除时,引用对象的值将更新为 NULL。因此,将为引用对象放置一个 NULL 值。这就是 SET NULL 的基本操作方式。

5. SET_DEFAULT

该选项的功能与名称所暗示的相同,当引用对象发生删除时,引用对象的值将更新为分配给它的默认值,因此引用对象的所有实例都将被分配这个默认值。因此,将为引用对象放置一个默认值。这就是 SET DEFAULT 的基本操作方式。

创建一个 Django on_delete 参数

下面给出了 Django on_delete 参数的创建:

Models.py 文件中的更改: 应用于 models.py 文件的更改如下所示;这些更改将反映在所用表单的前端。

这里使用了两个不同的 ondelete 参数,RESTRICT 和 CASCADE 选项。

例子:

(models.py)

代码:

from django.db import models
from django.contrib.auth.models import User
# Model variables
# Create your models here.
class Bride(models.Model):
models.CharField(max_length=200,null=True)
…..
Example_Post_Graduation_college = models.CharField(max_length=400,null=True)
Example_Rasi = models.CharField(max_length=200,null=True)
Example_Nakshatra = models.ForeignKey(User, null=True, on_delete=models.RESTRICT)
Example_Creator = models.ForeignKey(User, null=True, on_delete=models.CASCADE)
def __str__(self):
return self.name

输出:

解释:

  • 我们可以注意到,当对记录 karthi 的创建者调用删除时,由于使用了 RESTRICT 参数,这并不意味着将记录放置在用户表上。

结论

这篇文章提到了如何灵活地使用 on_delete 等选项来灵活地删除一条记录,并控制删除对所涉及的引用记录的影响。这是与 Django 应用程序相关的数据库操作的主要优势之一。


慕源网 » Django on_delete (Django on_delete 语法)17

常见问题FAQ

程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!

发表评论

开通VIP 享更多特权,建议使用QQ登录