我需要自定义 aModel.delete()
以便它不执行任何级联删除,而是在有任何引用该实例的对象时引发异常。似乎默认实现不允许跳过相关对象的删除:
def delete(self, using=None, keep_parents=False):
using = using or router.db_for_write(self.__class__, instance=self)
assert self.pk is not None, (
"%s object can't be deleted because its %s attribute is set to None." %
(self._meta.object_name, self._meta.pk.attname)
)
collector = Collector(using=using)
collector.collect([self], keep_parents=keep_parents)
return collector.delete()
如何确保 Django 不会级联删除任何相关对象?