django删除自我而不是自我指涉实体

时间:2012-12-18 09:50:09

标签: python django django-models

我有以下样本模型:

class Note(models.Model):
    text = models.TextField()
    author = models.OneToOneField(User)
    date_created = models.DateField(auto_now_add=True)
    similar_note =  models.ForeignKey("self", related_name='similar_note', null=True, blank=True)

说有两个音符Winner和Loser。

失败者有一个字段similar_note指向Winner Note。

当我删除这两个中的任何一个时,两个都被删除,我该如何防止这种情况发生? 我也试过从django管理界面做同样的事情,它也是从那里发生的。

PS:我正在使用django1.2,请不要建议升级,有太多限制的方式。

1 个答案:

答案 0 :(得分:2)

如上所述here

  

当Django删除一个对象时,默认情况下它会模拟对象的行为   SQL约束ON DELETE CASCADE - 换句话说,任何对象   有外键指向要删除的对象的将是   随之删除。

     

这种级联行为可以通过on_delete参数自定义   ForeignKey

请检查on_delete参数的型号字段:

user = models.ForeignKey(User, blank=True, null=True, on_delete=models.SET_NULL)