Ты серьезно не видишь проблемы и места где у тебя между вторым и первым вариантом расходится код?
Если нет, то попробуй сделать в консоли os.listdir(r'E:\forpython') и посмотри что он выведет.
zelsky, на сколько я понимаю этот абзац там говорится о том, что если не нужно каскадное удаление то нужно убрать GenericRelation, а в обработчике сигнала pre_delete написать нужную логику которая будет выполняться, например SET NULL. А не то, что можно оставить GenericRelation и в pre_delete определить что-то, это никак не складывается.