情况如下:
class Party(models.Model):
hosts = ManyToManyField("User")
现在让我们说我有一个聚会p
。我想删除p
(即通过p.delete()
)而不删除其所有主机。我该怎么做呢?如果我将选项on_delete
添加到主机,则django无法识别它。
答案 0 :(得分:0)
级联删除功能适用于ForeignKey关系,因为保存ForeignKey的模型可能具有依赖于关系的状态和行为。为了避免在那种情况下级联删除,对于某些对象foo,你必须迭代所有foo的相关对象,确保它们都具有
null=True
对于foo,那么你必须设置
foo=None
对于每个这样的相关对象,然后你可以调用
foo.delete()
没有foo的相关对象被删除。
但是这一切都不适用于你的情况,因为你有一个ManyToMany字段。级联删除对于多对多关系没有意义,因为没有一个对象紧密耦合到另一个对象,就像ForeignKey一样。