我有一个模型,它在几个模型中被设置为外键。现在,如果在这些模型中的任何一个中引用它,从模型中删除任何对象都会引发 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.'})
温温酱
慕莱坞森
相关分类