你可以使用
CollectorDjango 使用的类来确定要在级联中删除的对象。实例化它,然后调用
collect它传递要删除的对象。它需要一个列表或查询集,因此,如果只有一个对象,只需将其放在列表中:
from django.db.models.deletion import Collectorcollector = Collector(using='default') # or specific databasecollector.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 NestedObjectscollector = NestedObjects(using='default') # or specific databasecollector.collect([some_instance])to_delete = collector.nested()
更新:自Django 1.9起,django.contrib.admin.util重命名为django.contrib.admin.utils



