Как проверить, какие объекты будут удалены каскадом в Django?

В разделе /​​admin/section Django вы можете удалить элементы.

Если любые связанные объекты будут удалены вместе с выбранным вами объектом, вы увидите список затронутых объектов до подтверждения удаления.

Могу ли я проверить это в своей собственной функции программно?

Я хотел бы сделать что-то вроде

for item in Item.objects.all():
    if not deletion_would_also_delete_other_objects(item):
        item.delete()

Ответ 1

Не могли бы вы использовать из django.db.models.deletion import Collector для этого?

from django.db.models.deletion import Collector
from .models import Item

for item in Item.objects.all(): 
    collector = Collector({})
    collector.collect([item])

    # dependencies should be an empty dict if the item is not related to anything
    if not collector.dependencies:
        item.delete()