【发布时间】:2020-08-09 07:19:41
【问题描述】:
我想知道 CASCADE 究竟是如何与 Django 中的多对多字段一起工作的。
一个简短的例子:
class Project(Model):
name = TextField(null=False)
class Job(Model):
projects = ManyToManyField(Project, on_delete=CASCADE, null=False)
name = TextField(null=False)
如您所见,我在这里有一个 ManyToManyField。所以基本上一个项目可以有多个工作,一个工作可以属于多个不同的项目。我想要的是只有当它所属的所有项目都被删除时才会自动删除作业。 CASCADE 在这种情况下会这样工作吗?
【问题讨论】:
-
它删除所有与级联表链接的链行。
-
当项目本身被删除时,它会删除相关的行(所有作业),在你的情况下它完全没用,看看信号,或者模型管理器方法
.clear()并手动实现逻辑你想要
标签: django django-models cascade