当前位置: 首页 > 面试题库 >

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

鞠泰平
2023-03-14
问题内容

我正在做一个视图(使用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 Django 使用的类来确定要在级联中删除的对象。实例化它,然后调用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,该子类的工作方式相同,但是有一个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



 类似资料:
  • 我有以下型号: 类类别(models.Model):名称=模型。字符域(最大长度=255) 类元素(models.Model): 课程主题(models.Model): 元素=模型。ForeignKey(元素)name=模型。夏菲尔德(max_length=255) 我基本上需要在category id=1中添加新主题,并只获得属于类别1的élément列表 我在category id=1中创建了

  • 问题内容: 有谁知道或可以请提供一个简单的Django基于类的通用DeleteView示例吗?我想继承DeleteView的子类,并确保当前登录的用户在删除对象之前拥有该对象的所有权。任何帮助将不胜感激。先感谢你。 问题答案: 这是一个简单的例子: 注意事项: 该不会删除请求; 这是你提供带有此视图的“是,我确定”按钮的确认模板(你可以在class属性中提供名称)的机会。 你可能更喜欢错误消息而不

  • 问题内容: 这类似于我昨天提出的问题,但更具体地针对该问题。向已经包含各种小部件的NetBeans项目中添加JFreeChart的正确方法是什么?我的updateChart()隐藏了整个JFrame。我想将JFreeChart添加到JFrame中。 更正的代码: 问题答案: 我的updateChart()隐藏了整个JFrame。 那是因为您要用免费图表中的面板替换框架的内容窗格。 我不知道您使用的

  • 我正在做一个SWT项目,但是我将广泛使用来生成BufferedImages。我将以这种方式生成数十万张图像。 问题是,SWT似乎无法显示BuffereImage,并且有自己的类。我知道可以将BuffereImage转换为SWT的映像,但SWT的映像似乎需要手动处理,并且不像Swing的BuffereImage那样具有自动垃圾收集功能。 另外,我认为计算机要不断地从BuffereImage转换为Im

  • 当产品(和子产品)类别页面和商店页面中的条件标记(是产品类别)同时出现时,我无法应用下面的代码。 希望有人能帮忙。 我的目标:每个产品类别页面(包括家长) 参考代码片段和代码片段

  •  这个世界上的文字类冒险游戏,显示文字方式可以大致分为在对话框内显示和电子小说式全画面窗口(Visual-Novel Type)两种。只是文字显示位置的不同,并没有特别大的差异。以上两种显示方式 KAG 均支持。 两种文字显示方式  此外,也能做到竖行显示。 竖行显示  KAG 默认的设定使用的是横行显示和电子小说式。详细的说明请参考 Config.tjs 。本教程将以使用电子小说式为前提,继续说