0

我有以下示例模型:

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。

Loser 有一个字段similar_note 指向Winner Note。

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

PS:我用的是django1.2,请不要建议升级,限制太多。

4

1 回答 1

2

如此处所述:

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

此级联行为可通过 ForeignKey 的 on_delete 参数进行自定义

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

user = models.ForeignKey(User, blank=True, null=True, on_delete=models.SET_NULL)
于 2012-12-18T10:10:26.277 回答