python - django覆盖删除级联一次
问题描述
是否有确保模型实例没有任何相关对象的选项?即,如果 Person 对象有任何相关对象,我想要这一行
person.delete()
引发错误。
而且我不想修改on_delete=models.CASCADE
每个外键。我只在这里需要这种保护,对于我的应用程序中的任何其他情况(如 django 管理站点),我确实更喜欢级联行为。
解决方案
这符合你想要的吗?
has_related = False
for field in person.__class__._meta.get_fields():
if field.is_relation:
field_name = field.get_accessor_name()
model_field = getattr(person, field_name)
if not isinstance(model_field, models.Model) and model_field.all():
has_related = True
break
if not has_related:
person.delete()
推荐阅读
- makefile - Makefile 中缺少依赖项
- oracle - 我如何在 Pivot 的 IN 子句中传递 select sql
- json - 从 JSON API 显示 MapView 标记
- java - 在 nCipher HSM 配置上禁用 KeyPairGenerator.getInstance("RSA", "nCipherKM") RSA 算法时出错
- wagtail - 回溯鹡鸰页面
- php - WordPress 调用未定义函数 in_category()
- c# - 动态创建控件时,RadioButton 上的已检查事件命令绑定不起作用
- jquery - ajax 调用总是抛出 xhr.send(options.hascontent && options.data null) 错误
- webpack - 如何构建需要不同 webpack 版本的不同项目?
- asp.net - 如果然后逻辑无法执行代码块