确定Django模型是否标记为删除

时间:2017-02-24 17:19:01

标签: python django django-models django-signals

我的例子非常人为,但希望它能说明问题。

说我有两个这样的模型:

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}}次呼叫之后,父母的实际删除发生了,在这种情况下,我尝试做的事情是不可能的。

1 个答案:

答案 0 :(得分:0)

尝试通过成员类中的类方法完成工作,忘记信号。

@classmethod
def reinit(cls, instance):
    instance.delete()
    instance.save()