如何从 Django DeleteView 发送错误消息?

2023-12-21

假设有两个模型Parent and Child. Parent to child是一对多的关系。

我正在为父模型创建DeleteView。在删除之前我需要检查是否Parent has Children。如果没有Children then Parent模型照常删除。但如果有Children然后我需要将错误消息发送到DeleteView确认页面。

我如何使用DeleteView 来实现这一点?


DeleteView继承了删除混合 https://docs.djangoproject.com/en/2.1/ref/class-based-views/mixins-editing/#django.views.generic.edit.DeletionMixin。你能做的就是添加on_delete=PROTECTED在您的子模型中并覆盖视图中的删除方法以捕获ProtectedError例外。有关错误消息,请参阅 Django 的消息框架 https://docs.djangoproject.com/en/2.1/ref/contrib/messages/.

模型.py:

class Child():
    #...
    myParent = models.ForeignKey(Parent, on_delete=PROTECTED)

视图.py:

from django.db.models import ProtectedError

#...

class ParentDelete(DeleteView):
    #...
    def delete(self, request, *args, **kwargs):
        """
        Call the delete() method on the fetched object and then redirect to the
        success URL. If the object is protected, send an error message.
        """
        self.object = self.get_object()
        success_url = self.get_success_url()

        try:
            self.object.delete()
        except ProtectedError:
            messages.add_message(request, messages.ERROR, 'Can not delete: this parent has a child!')
            return # The url of the delete view (or whatever you want)

        return HttpResponseRedirect(success_url)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 Django DeleteView 发送错误消息? 的相关文章

随机推荐

  • Phonegap iPad 应用程序启动画面/启动屏幕在 deviceReady 上切换

    我有一个使用 HTML JS CSS Phonegap 创建的 iPad 应用程序 仅限横向 一切都按预期进行 但是我遇到了启动画面 启动屏幕的问题 当应用程序加载时 会显示正确的启动画面 正确的大小和命名等 但是一旦应用程序达到 devi
  • Google Billing API:订阅购买后不久,会触发订阅过期,然后立即续订订阅

    我正在使用 Firebase Cloud Functions 来处理应用内购买的后端流程 如果我购买订阅 在 Flutter Android 客户端上 购买流程将毫无问题 但是 当第一次续订发生时 我首先收到订阅已过期的实时开发人员通知 大
  • 本地化比较属性

    这个问题的底部是一个包含三个属性的模型 OldPassword NewPassword 和ConfirmPassword 这些显示在更改密码表单中 我已本地化了所有错误消息 但以下一条除外 当 Compare 属性失败时 我无法完全本地化错
  • 我有一个 Vertx 请求,我需要计算一个外部可见(公共)URL

    我将 Vertx 3 与 Kotlin 结合使用 有时我需要从公共 URL 的角度返回一个特定的 URI 该 URI 与 Vertx web 请求认为我的 URL 不同 这可能是由于我的负载均衡器或代理接收一个 URL 然后通过内部 URL
  • Javascript-变量提升

    这是一个简单的片段 我只是不明白 下面的代码输出 12 我明白 因为var foo 12 替换先前的变量声明 在下面的代码中 它会发出警报1 这意味着在函数外部声明的变量可以在函数内部访问 但是 在下面的代码中 为什么它会警告未定义 我以为
  • CSS:最大宽度不会缩小? [复制]

    这个问题在这里已经有答案了 可能的重复 使 CSS Div 宽度等于内容宽度 https stackoverflow com questions 450903 make css div width equal to contents 我正在
  • 亚马逊MWS feed API问题,取消订单

    请帮我解决这个问题 我很久以前就尝试通过 MWS Feed API 取消亚马逊订单 但它根本没有取消 Feed 提交一切正常 但订单并未取消 下面是我的 Feed XML 我们正在使用我尝试过的报告类型 POST ORDER ACKNOWL
  • Python 是否评估前向引用的类型提示?

    我正在查看 PEP 484 部分转发参考文献 https www python org dev peps pep 0484 forward references并注意到以下声明 该定义可以表示为字符串文字 稍后解决 这让我想知道 稍后 是什
  • 从最小化状态恢复表单时,WS_EX_COMPOSITED 会导致无休止的重画

    The Form从最小化状态恢复时需要无尽的时间来重新绘制 The Form是无国界的 我凌驾于一切之上WndProc and 创建参数 我正在恢复无边界Form从最小化状态到正常状态 我凌驾于一切之上创建参数降低阴影并停止闪烁的方法 pr
  • 按三个不同列中的最大值排序

    我什至不确定是否可以执行此操作 但我想根据三列之一的最大值来排序查询 表结构示例 引导 列 1 列 2 列 3 第 1 3 列有数值 我想根据 1 2 OR 3 的最大值对 select 语句进行排序 例如 record column1 c
  • Akka testkit:时间因素是多少?

    Akka TestProbe 上有多种方法表示它们 正确处理 timeFactor 这意味着什么 http doc akka io api akka 2 0 akka testkit TestProbe html http doc akka
  • NFA 与 DFA 的时间复杂度权衡

    我正在寻找关于 nfa 或 dfa 哪个更好使用以及在编译器中什么情况下使用的讨论 模拟 nfa 与 dfa 的时间复杂度权衡是什么 在编译器的什么情况下 哪一个更合适 从 NFA 构造 DFA 的时间为 O 2 m 其中 m 是节点数 D
  • AWS S3 预签名 URL 包含 X-Amz-Security-Token

    我正在尝试使用 go sdk 为 S3 存储桶中的文件创建预签名 URL 当我从命令行运行程序时 我得到了不包含 X Amz Security Token 的预签名 URL 但如果我使用 lambda 函数中的相同代码 我总是会在 URL
  • 在 Python 类中支持等价性(“平等”)的优雅方法

    在编写自定义类时 通过以下方式允许等效性通常很重要 and 运营商 在 Python 中 这是通过实现 eq and ne 分别采用特殊方法 我发现执行此操作的最简单方法是以下方法 class Foo def init self item
  • 使用 Gtk 3 在 Python 中加载并显示来自网络的图像?

    我正在 Ubuntu 12 04 上使用 Python 和 GTK 3 编写一个应用程序 我遇到的问题是我不知道应该如何使用来自网络的图像文件在我的应用程序中显示 Gtk Image 据我所知 from gi repository impo
  • Axlsx - 设置单元格内文本的格式

    我似乎找不到任何有关是否可以使用多个格式选项填充单个单元格的信息 例如 我希望单元格 A1 填充以下文本 Hello世界 这是excel 这可能吗 如果可以 我应该使用什么语法来执行此操作 对于内联样式 请使用富文本 以下是 axlsx 页
  • 当我尝试运行 Python 脚本时,为什么会出现“预期有缩进块”? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 编辑问题以包括期望的行为 特定问题或错误以及重现问题所需的最短代码 help minimal reproducible example 这
  • VS2015 - 更改 TypeScript 版本

    我正在尝试更新我的 Visual Studio 2015 Cordova TypeScript 项目以使用 TypeScript 版本1 6 0 beta 我目前正在使用1 5 3 我可以使用 NPM 安装最新版本 但我的项目继续使用旧版本
  • 更改列的因子值

    我试图根据同一数据帧的另一列 solve status 列将值分配给数据帧的新列 all solved status 是一个具有 3 个标签的因子 ABC XYZ MNP 我必须根据条件 if ABC then 1 else 0 分配给 0
  • 如何从 Django DeleteView 发送错误消息?

    假设有两个模型Parent and Child Parent to child是一对多的关系 我正在为父模型创建DeleteView 在删除之前我需要检查是否Parent has Children 如果没有Children then Par