是否可以选择确保模型实例没有任何相关对象? 即,如果Person对象具有任何相关对象,则我需要此行
person.delete()
引发错误。
我不想为每个外键修改on_delete=models.CASCADE
。我仅在这里需要这种保护,对于我的应用程序中的任何其他情况(例如django管理站点),我都更喜欢级联行为。
答案 0 :(得分:1)
这符合您的需求吗?
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()