【问题标题】:Handling many-to-many relationship from existing database using Django ORM使用 Django ORM 处理来自现有数据库的多对多关系
【发布时间】:2019-09-26 11:47:32
【问题描述】:

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

数据库有很多多对多的关系,所以有很多表链接另外两个表。我运行 inspectdb 命令让 Django 为我准备一些模型。我修改了它们,猜测字段和关系做得很好,但问题是,我认为我的模型中不需要那些链接表,因为 Django 处理与ManyToManyField 字段的多对多关系,但是我希望 Django 在后台使用该链接表。

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

我不想以某种方式弄乱数据库结构,它的数据量很大。

我正在使用 Postgres 9.5、Django 2.2。

【问题讨论】:

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


    【解决方案1】:

    在许多情况下,这并不重要。如果您想保持代码最少,那么 m2m 字段是一个不错的方法。如果您不控制数据库结构,则可能值得保留 inspectdb 架构,以防在您无法控制的架构更改后必须再次执行此操作。如果 m2m 链接表可以增长自己的属性,那么您需要将它们保留为模型。

    【讨论】:

    • 感谢您的快速回复!我将保留 inspectdb 模式并尝试处理没有链接表模型的 m2m 字段。经常困扰我的是 Django 强制的列命名约定,但我想我需要寻求一些自定义方法。
    猜你喜欢
    • 2011-06-27
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-28
    • 2017-09-30
    • 2013-09-16
    相关资源
    最近更新 更多