【问题标题】:Can deleting a django Model with a ManyToManyField create orphaned database rows?可以使用 ManyToManyField 删除 django 模型创建孤立的数据库行吗?
【发布时间】:2023-04-10 02:39:02
【问题描述】:

如果我有两个具有多对多关系的类 A 和 B,并且我想删除 A 的一个实例,我需要先删除其所有相关的 B,还是 Django 会帮我解决?

我显然不想在连接表中留下孤立的行。

如果在 A 类或 B 类上声明 ManyToMany 字段会有什么不同吗?

如果在使用“through”参数指定的连接类上有额外的字段,会有什么不同吗?

【问题讨论】:

  • 呸! :) 其实我想知道“正确”的做法是什么。我不希望它在生产中、在不同的数据库后端等上表现不同。
  • “正确”的方式是仅仅删除A的实例,让Django为你删除M2M。

标签: python django django-models many-to-many


【解决方案1】:

如果我有两个具有多对多关系的类 A 和 B,并且我想删除 A 的一个实例,我需要先删除其所有相关的 B,还是 Django 会帮我解决?

简答:Django 会帮你解决的。

如果在 A 类或 B 类上声明 ManyToMany 字段有什么不同吗?

据我所知,不,没有什么区别。

如果在使用“through”参数指定的连接类上有额外的字段,会有什么不同吗?

我自己没有尝试过,但我不明白为什么会有问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-05-06
    • 1970-01-01
    • 2020-08-17
    • 1970-01-01
    相关资源
    最近更新 更多