假设以下模型:
class DeltaCheck(models.Model):
logs = generic.GenericRelation('Log')
title = models.CharField(max_length=50)
owner = models.ForeignKey(User)
class Log(models.Model):
title = models.CharField(max_length=50)
content_type = models.ForeignKey(ContentType)
object_id = models.PositiveIntegerField()
content_object = generic.GenericForeignKey('content_type', 'object_id')
如果我创建了一个增量检查和几个日志,然后删除了增量检查,那么这些日志也会被删除:
^{pr2}$但是,如果我删除用户(字段owner
),则DeltaCheck
将被删除,而不是日志,请看:
In [14]: Log.objects.count()
Out[14]: 10
In [15]: DeltaCheck.objects.get().owner.delete()
In [16]: DeltaCheck.objects.all()
Out[16]: []
In [17]: Log.objects.count()
Out[17]: 10
为什么?好像是个虫子。
编辑1:
奇怪的是,在失败的情况下,前删除和后删除信号都会被触发。。。中间会发生什么?
编辑2:
好吧,这很奇怪。如果我为pre_delete
信号定义一个空接收器。。。刚刚添加了:/it:
@receiver(pre_delete)
def recv(**kwargs):
pass
现在它起作用了。。。
作为the bug report states,它确实是一个现已修复的错误。在
相关问题 更多 >
编程相关推荐