Django中奇怪的删除

时间:2014-02-03 20:31:22

标签: python django django-models

我有一个网络游戏,其中联盟可以有多个成员。这由每个成员的类上的外键字段表示(视为成员只能是一个联盟的一部分)。

我一直在发现奇怪的世界和联盟被删除的例子。我把它缩小到我确定世界因为联盟而被删除的地方,所以我删除了级联删除。但是,我仍然无法弄清楚我的生活为什么首先要删除联盟。

我覆盖了自定义删除方法,如下所示:

class Alliance(models.Model):
    ...
    def delete(self, *args, **kwargs):
        mail.send_mail('Alliance Deletion', '%s has been deleted.' \
           % self.alliance_name, 'from@email.com', ['to@email.com'])
        super(Alliance, self).delete(*args, **kwargs)

但是,至少有一个联盟已被删除,我没有收到发送给我的电子邮件。我收集这是因为我必须从QuerySet调用delete(),但是我已经使用精细梳齿梳理我的代码,并且恰好有一次我在任何联盟实例上调用delete(),并且它还没有结束一个QuerySet。

有没有办法找出造成这种情况的原因,或找出执行删除对象的功能?

1 个答案:

答案 0 :(得分:0)

想出来了。当我应该调用delete()时,我正在调用remove()关于M2M关系。