我只是注意到删除与自己有关联的对象也会导致删除相关对象:
class STH(models.Model):
...
partner = models.ForeignKey(STH, blank=True, null=True)
In [1]: sth = STH.objects.get(name = 'sth01')
In [2]: sth.partner
Out[2]: <STH: sth02>
In [3]: sth.partner.partner
Out[3]: <STH: sth01>
In [4]: sth.delete()
Out[4]: (2, {'app.Disk': 0, 'app.STH': 2})
。
我想从settings.py 更改此行为 ,这不会删除伙伴,仅删除原始对象并将关系设置为NULL。 / p>
我该如何实现?
Django:1.9.x 的Python:3.4.5 PostgreSQL:9.4.x
非常感谢。
答案 0 :(得分:1)
将on_delete
参数指定为DO_NOTHING
class STH(models.Model):
...
partner = models.ForeignKey(STH, on_delete=models.DO_NOTHING, blank=True, null=True)
更新
如@Kevin Christopher Henry所述,您可以将其设置为SET_NULL
,因为您已使用null=True
定义了FK关系
是否可以通过使用
settings.py
来做到?
AFAIK,您不能这样做,因为它是数据库更改命令(内部)。因此,您应该编辑所有必需的模型并迁移以获得所需的结果