我有一个网络游戏,其中联盟可以有多个成员。这由每个成员的类上的外键字段表示(视为成员只能是一个联盟的一部分)。
我一直在发现奇怪的世界和联盟被删除的例子。我把它缩小到我确定世界因为联盟而被删除的地方,所以我删除了级联删除。但是,我仍然无法弄清楚我的生活为什么首先要删除联盟。
我覆盖了自定义删除方法,如下所示:
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。
有没有办法找出造成这种情况的原因,或找出执行删除对象的功能?
答案 0 :(得分:0)
想出来了。当我应该调用delete()
时,我正在调用remove()
关于M2M关系。