【问题标题】:Create model for existing database table in django在 django 中为现有数据库表创建模型
【发布时间】:2019-12-24 16:56:27
【问题描述】:

我在数据库中有一张旧表。我想在 Django 应用程序中创建一个模型。 创建模型后,我使用了 migrate 命令,然后它创建了一个具有自己名称的新表。

【问题讨论】:

标签: django django-models


【解决方案1】:

您可以通过在模型的Meta 类上设置table 来指定表名。设置managed = False,防止Django创建表。

class ExistingModel(models.Model):
    ...

    class Meta:
        table = 'existing_table'
        managed = False

进行这些更改后,我会revert the previous migration,删除迁移文件,然后再次运行makemigrations

【讨论】:

  • 如果您只想暂时让表不受管理,对于单个迁移,然后您希望它在之后进行管理,该怎么办?我正在考虑您有一个预先存在的隐式 m2m through table 并且稍后想要为其添加显式模型的情况。可以标记为 managed=False,makemigrations,迁移,然后标记为 managed=True 吗?
  • 显然 Django 确实将隐式直通表更改为显式表。
猜你喜欢
  • 1970-01-01
  • 2011-01-15
  • 2011-01-09
  • 2018-12-19
  • 1970-01-01
  • 2016-08-17
  • 2020-09-11
  • 2023-03-09
  • 1970-01-01
相关资源
最近更新 更多