我的例子非常人为,但希望它能说明问题。
说我有两个这样的模型:
Member
我想添加一些代码,以便在删除@receiver(post_delete, sender=Member)
def member_delete(sender, instance, **kwargs):
instance.pk = None
instance.save()
时将其重新创建为新条目(记住,非常做作!)。所以我这样做:
Member
这对于删除Group
时非常适用。
但问题是,如果删除了Member
,则会调用相同的处理程序。通过引用Group
重新创建IntegrityError
,并在最终提交时抛出Group
。
信号处理程序中是否有任何方法可以确定是否删除了sender
?
我尝试过的事情:
Member
似乎总是instance.group
无论如何。 Group.objects.filter(id=instance.group_id).exists()
上找到任何表示删除的内容。即使尝试post_delete
也会返回true。可能是在对孩子进行{{1}}次呼叫之后,父母的实际删除发生了,在这种情况下,我尝试做的事情是不可能的。答案 0 :(得分:0)
尝试通过成员类中的类方法完成工作,忘记信号。
@classmethod
def reinit(cls, instance):
instance.delete()
instance.save()