如何在 Django 中使用 DeleteView 显示相关项目?

2024-01-26

我正在做一个视图来从模型中删除实例(使用 Django 中的通用视图DeleteView),但它会级联并删除其他模型中的实例:

url(r'^person/(?P<pk>\d+)/delete/$', login_required(DeleteView.as_view(model=Person, success_url='/person/', template_name='delete.html')), name='person_delete'),

我想要做的是显示将要删除的相关项目的列表,就像管理界面一样,例如:

Are you sure you are going to delete Person NAMEOFTHEPERSON?
By deleting it, you are also going to delete:
CLASSNAME1: CLASSOBJECT1 ; CLASSNAME2: CLASSOBJECT2 ; CLASSNAME3: CLASSOBJECT3 ; etc

您可以使用Collector https://github.com/django/django/blob/master/django/db/models/deletion.pyDjango 使用类来确定要在级联中删除哪些对象。实例化它然后调用collect在其上传递您想要删除的对象。它需要一个列表或查询集,因此如果您只有一个对象,只需将其放入列表中:

from django.db.models.deletion import Collector

collector = Collector(using='default') # or specific database
collector.collect([some_instance])
for model, instance in collector.instances_with_model():
    # do something

instances_with_model返回一个生成器,因此您只能在循环上下文中使用它。如果您更喜欢可以操作的实际数据结构,admincontrib 包有一个Collector子类称为NestedObjects https://github.com/django/django/blob/master/django/contrib/admin/util.py,其工作方式相同,但有一个nested返回分层列表的方法:

from django.contrib.admin.utils import NestedObjects

collector = NestedObjects(using='default') # or specific database
collector.collect([some_instance])
to_delete = collector.nested()

更新:从 Django 1.9 开始,django.contrib.admin.util被重命名为django.contrib.admin.utils

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

如何在 Django 中使用 DeleteView 显示相关项目? 的相关文章

随机推荐

  • Ionic devapp 只是搜索

    我在使用 Ionic DevApp 应用程序时遇到问题 我使用它在浏览器中打开的 ionicserve c 命令 但在我的设备上它只是寻找 侦听网络上的应用程序 它没有出现在我的设备上 但是我已经在其他 2 台设备上进行了测试 并且项目出现
  • 如何禁用 jquery 数据表中的显示条目属性

    我刚刚开始使用 jquery 我使用 jquery 数据表插件来启用表视图 我需要禁用显示条目属性 谁能帮助我在哪个js中我需要禁用该属性 我已关注此链接 但没有帮助 不知道要修改哪个js here http datatables net
  • QTreeView内存消耗

    我现在正在测试 QTreeView 功能 我对一件事感到惊讶 看来 QTreeView 内存消耗取决于项目计数 O O 这是非常不寻常的 因为这种类型的模型视图容器仅跟踪正在显示的项目 其余项目都在模型中 我用一个简单的模型编写了以下代码
  • Android 证书已更改?

    我最近格式化了我的计算机并更新到 Windows 7 我备份了我的密钥库并尝试用它签署我的 apk 但它给了我一个错误 说我的证书将在 22 年后过期 这仅低于市场上传 apk 的要求 所以现在我陷入无法更新我的应用程序 这怎么发生的 有没
  • Emacs 打开最近的文件很慢!

    直接打开文件时速度很快 但是当我打开最近激活的文件时 在我的文件中添加以下行 emacs require recentf recentf mode 1 setq recentf max menu items 25 global set ke
  • Actionscript 3:如何从外部类访问舞台上的元素?

    我的 as 文件中有一个外部类 我的问题是我无法访问舞台上的元素 像 stage txtfield text 或 this parent txtfield text 这样的代码不起作用 txtfield 是动态文本字段的实例名称 这在一定程
  • Laravel 注册表单上的自定义验证

    我目前正在努力对注册表进行一些验证 基本上 当用户注册时 它会检查他们输入的唯一代码是否有效 如果无效则不允许他们注册 但在我从中读取的代码表中 代码上也有一个到期日期 我需要在认为有效后再次检查到期日期尚未过去 换句话说 它不大于现在 我
  • 编写一个返回值的 jQuery 插件

    我正在编写一个 jQuery 插件 在某些情况下可以存储一些数据 我想以一种非常灵活的方式编写它 我可以更改输入参数来获取插件存储的一些值 解释 当我打电话时 any myPlugin 我的插件初始化创建一个div还有一些a里面 单击一个a
  • C++ 中的全局变量是存储在堆栈、堆还是两者都不存储?

    最初我很确定正确的答案一定是 都不是 因为全局变量存储在数据内存中 但后来我找到了 Robert Lafore 的这本书 名为 C 中的面向对象编程 它明确指出 根据C 标准 全局变量存储在堆上 现在我很困惑 无法真正弄清楚所提出问题的正确
  • 如何在表单完成期间设置外键(python/django)

    在表单处理期间 我希望能够在模型对象上设置外键字段 而无需用户从下拉列表中选择键 例如 models py class AAA models Model some field models TextField class BBB model
  • where 0=0 这样的条件的确切含义是什么?

    我在 Oracle 过程中使用 where 0 0 这样的语句时有点困惑 有人可以澄清一下吗 即使我们这样做是为了动态选择 为什么即使我们在查询中附加了实际条件 也要添加这条语句呢 这个 where 条件会对结果集产生任何影响吗 我经历了如
  • LINQ 中的 GETDATE()

    替代品是什么GETDATE 在 LINQ 中 我从以下帖子中得到了一些解决方法 如何在 Linq to SQL 表达式中使用 SQL 的 GETDATE 和 DATEADD https stackoverflow com questions
  • 如何在 EasyNetQ 中为每个消费者声明自定义错误交换?

    我有四个消费者 当错误发生时 消息发布到默认的 EasyNetQ Default Error Queue 是否可以让每个队列消费者编写自己的错误交换 例如 Queue Name A ErrorExchange A ErrorExchange
  • 未定义 navigator.push React-native 0.43.4

    我正在使用react native的Navigator组件 但当我想推送到anthor页面时仍然出现错误push undefined is not a function这是我的代码 import React Component from r
  • Google 地图路径的 SVG 渐变线

    我正在解释谷歌地图中的 GPS 位置数据 在这里我想创建一条带有渐变的路径 该路径以红色开始 以橙色结束 this https developers google com maps documentation javascript exam
  • std::function 可以序列化吗?

    这是一个理论问题 假设有一些对象 其中包含订阅这些对象的事件的回调函数列表 现在我们想将这些对象存储在磁盘上 是一个std function可序列化 No 每当使用类型擦除 即 将实现细节隐藏在接口后面 时 在不知道对象的动态类型的情况下唯
  • 如何将文本放入绘图的方框内

    我想将文本放在 matplotlib 图上的框中 但是文档 http matplotlib org users recipes html placing text boxes仅给出如何将其放在右上角的示例 并且选择不同的角并不完全简单 这是
  • 将 json 字符串转换为 Java Map(JSONLib)

    如何使用 JSON lib http json lib sourceforge net 将 json 字符串转换为 Java Map 我可以转换为 DynaBean JSONObject jsonObject JSONObject JSON
  • Scanf 似乎无法在带有 GDB 的 Eclipse CDT 中以调试模式工作

    在调试模式下运行此代码时 include
  • 如何在 Django 中使用 DeleteView 显示相关项目?

    我正在做一个视图来从模型中删除实例 使用 Django 中的通用视图DeleteView 但它会级联并删除其他模型中的实例 url r person P