У меня есть модель, которая установлена как внешний ключ в нескольких моделях.Прямо сейчас, удаляя любой объект из модели, выдается ProtectedError, если на него ссылаются в любой из этих моделей.Я хочу позволить пользователю удалить объект со всеми защищенными объектами за одну операцию.
Я могу удалить первый слой защищенных объектов, просто вызвав
....
except ProtectedError as e
e.protected_objects.delete()
....
Но когда protected_objects
имеют свои собственные защищенные объекты, операция завершается неудачей и выбрасывает еще один второй слой ProtectedError
.Чего я хочу добиться, так это удалить все защищенные объекты без разбора, в каком слое он существует.Я знаю, что это может быть опасной операцией для выполнения.Но могу ли я достичь этого без комплексного решения.Заранее спасибо.
Исходный код, где я пытаюсь выполнить операцию ajax:
try:
obj_list = model.objects.filter(pk__in=pk_list)
log_deletion(request, obj_list, message='Record Deleted')
obj_list.delete()
return JsonResponse({'success': True, 'status_message': '{0} record(s) has been deleted successfully.'.format(len(pk_list))})
except ProtectedError as e:
e.protected_objects.delete()
return JsonResponse({'success': False, 'status_message': 'This operation cannot be executed. One or more objects are in use.'})