【问题标题】:Django update models.py when database changes数据库更改时Django更新models.py
【发布时间】:2015-08-13 09:11:06
【问题描述】:

我知道这可能是一个愚蠢的问题,但我已经花了半个小时试图弄清楚这一点,但找不到任何东西:S

我有一个 django 应用程序,我对我的数据库表进行了重大更改。我想更新我的 models.py 文件,但我尝试了以下命令,但没有任何反应。

syncdb、迁移、makemigrations...

我想删除我以前的模型文件并创建一个新的。

谢谢!

【问题讨论】:

    标签: mysql django django-syncdb


    【解决方案1】:

    你的工作流程搞错了。

    Django 有一个管理数据库的 ORM。如果要进行更改,请编辑 models.py 文件。迁移将自动更改数据库表以匹配您的新模型。反过来也行不通:Django 不使用数据库自​​省来获取数据库中的手动更改并编辑您的模型文件。

    现在,有一种解决方法,但这不是一个长期的解决方案。随着时间的推移,您会想要为模型添加自定义功能,并且您不想在每次更改后重写该功能。 Django 提供的自省功能也不完美,它只是作为一种工具来快速开始在遗留数据库之上开发应用程序。

    您可以使用manage.py inspectdb所有 现有表生成 Django 代码。然后,您可以将特定型号的代码复制到您的 models.py 文件中。然后,您应该删除 managed = Falsedb_table = ... 选项,删除所有迁移,仔细检查字段,然后重新运行 makemigrationsmigrate --fake-initial。这将使数据库、模型和迁移重新同步,然后您将能够使用迁移框架进行任何其他更改。

    请务必阅读migrations 上的文档。这应该让您对 Django 如何管理数据库以及更改数据库的工作流程有一个很好的理解。

    【讨论】:

      猜你喜欢
      • 2012-03-21
      • 2020-05-20
      • 2019-01-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多