且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

Django级联删除和post_delete信号

更新时间:2023-02-05 11:39:01

这不是user2059857所建议的优雅解决方案,但更易于实现:

Not an elegant solution as what user2059857 suggested, but a LOT simpler to implement:

为模型A添加一个字段:

Add a field to model A:

being_deleted = models.BooleanField(default=False)`

在触发模型pre_delete信号时将其设置为True:

Set this to True when A model pre_delete signal is fired:

@receiver(models.signals.pre_delete, sender=A)
def a_pre_delete(sender, instance, **kwargs):
    instance.being_deleted = True
    instance.save()

检查您的A实例的 being_deleted 在子模型的每个 pre_delete 中是否为True,并采取相应的措施.

Check if being_deleted of your A instance is True in every pre_delete of child models and act accordingly.