Django: Enumerate Objects that Will Get Cascade-Deleted
When you try to delete an object, the Django admin gives you a list of all the related objects that will be cascade-deleted as a result. What if you want to get a list of these objects programmatically? You could do it this way:
from django.contrib.admin.util import NestedObjects
from django.db import DEFAULT_DB_ALIAS
obj = ... # the object you are going to delete
collector = NestedObjects(using=DEFAULT_DB_ALIAS)
collector.collect([obj])
print collector.nested()
This gives you a nested list of the objects that will get deleted if you delete
obj
. Note that NestedObjects
is an undocumented API, so there is no
guarantee that it will continue working from version to version. I tested only
with Django 1.4.1.