Django - после изменения всех обратных связанных объектов родительский объект по-прежнему не может быть удален

У меня есть следующая модель (в демонстрационных целях):

class ProjectModule(models.Model):
   name = models.CharField(...)
   module = models.ForeignKey('ProjectModule', ....., on_delete=models.PROTECT)
   ... (many more fields and relations) ...

Я написал функцию для слияния экземпляров, чтобы избавиться от дубликатов и тому подобного. Для этого мне нужно изменить все связанные объекты первого объекта (succumber) и указать им на их нового родителя (подмодуль выжившего). После изменения всех внешних ключей я удаляю объект succumber.

new_parent = survivor.projectmodule_set.filter(name=entry.name).first()
succumber.projectmodule_set.update(module=new_module)
succumber.delete()

Но это не работает, потому что Django выбрасывает следующую ошибку:

"Cannot delete some instances of model 'ProjectModule' because they are referenced through a protected foreign key: 'ProjectModule.module'", <QuerySet [<ProjectModule: 1.1 : LCP : 5583>, <ProjectModule: 1.2 : JB1 : 5583>, <ProjectModule: 1.3 : JB2 : 5583>]>

Теперь я просто изменил эти (обратно) связанные объекты и дал им новый внешний ключ. Их имена даже отражают это (5583 - id нового родителя). Перезагрузка суккумбера перед удалением тоже не помогает. Он просто не может "забыть" эти отношения и поэтому не может быть удален, хотя отношения уже изменились.

Я также попробовал "длинный подход":

for submodule in succumber.projectmodule_set.all():
    submodule.module = new_parent
    submodule.save()

Но безуспешно. Что я делаю не так?

Вернуться на верх