使用Django ORM处理现有数据库中的多对多关系

时间:2019-05-08 17:12:26

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

我开始使用Django,已经完成了一些模型,但是始终使用“代码优先”方法来完成,所以Django处理了表的创建等。现在,我将一个已经存在的数据库与ORM和我遇到了一些问题。

数据库具有很多对多的关系,因此有很多表链接了另外两个表。我运行了inspectdb命令,让Django为我准备了一些模型。我对其进行了修订,在猜测字段和关系方面做得很好,但是事实是,我认为我的模型中不需要那些链接表,因为Django处理ManyToManyField字段的多对多关系,但我希望Django在后台使用该链接表。

所以我的问题是:应该删除链接表的模型并将ManyToManyFields添加到相应的模型,还是应该以某种方式使用此模型?

我不想以某种方式弄乱数据库结构,因为它的人口很多。

我正在使用Postgres 9.5,Django 2.2。

1 个答案:

答案 0 :(得分:0)

在很多情况下都没有关系。如果您希望将代码保持在最小限度,那么m2m字段是一个不错的选择。如果您不控制数据库结构,则可能值得保留inspectdb模式,以防万一在您无法控制的模式更改后必须再次执行该操作。如果m2m链接表可以增加其自身的属性,则需要将其保留为模型。