模型实例上的Django反向(on_delete)保护

模型实例上的Django反向(on_delete)保护,django,django-models,django-model-field,Django,Django Models,Django Model Field,可以在反向关系中保护模型。例如,在以下模型中:- class Foo(models.Model): foo_field1 = models.CharField(max_length=56, unique=True) class Bar(models.Model): bar_field1 = models.ForeignKey(Foo, on_delete=models.PROTECT, blank=True) bar_field2 = models.CharField(

可以在反向关系中保护模型。例如,在以下模型中:-

class Foo(models.Model):
    foo_field1 = models.CharField(max_length=56, unique=True)

class Bar(models.Model):
    bar_field1 = models.ForeignKey(Foo, on_delete=models.PROTECT, blank=True)
    bar_field2 = models.CharField(max_length=56, unique=True)

如果试图删除
Foo
的实例,则不会删除该实例,因为
Bar
上的
属性设置为
models.PROTECT
。那么,是否有可能从两方面扩大这种保护?也就是说,如果试图删除
Bar
的实例,那么它是否可以像
Foo
一样得到保护,有人可以建议一个解决方案吗?

我没有完整的解决方案给您,但我建议您考虑使用一个特定的
预删除
。您可以在该信号中检查
bar
实例中的
bar\u字段\u 1
是否为空,如果不为空,则中止删除。

是的,我想您可能是对的,我想django没有提供内置的功能来执行此操作。可能是因为这实际上会阻止对两个表的删除。无论如何,您能告诉我如何在
预删除
中中止实例删除吗?