Все дело в том, что джанга производит рассылку сигналов удаления на уровне ORM, все эти pre_delete и post_delete
https://docs.djangoproject.com/en/dev/topics/signals/
Поэтому и тянутся все удаляемые обьекты, что бы разослать сообщения зависимым обьектам :( поэтому массовое удаление выглядит как вытяжка всех айдишников, рассылка сигналов, а потом delete from ... where id in (<и тут кучища этих id через запятую>).
Поэтому для удаления нескольких миллионов записей, к примеру, я использую только RAW SQL, увы.