【问题标题】:manage.py migrate does not detect changesmanage.py migrate 未检测到更改
【发布时间】:2015-07-20 01:39:26
【问题描述】:

我有一个使用 django restframework 的 python 项目。它最初使用的是 sqlite - 数据库。现在我已将其更改为 postgresql。所有数据都被替换,项目现在使用 postgresql 数据库。一切正常。

但是现在我不得不在我的 python 项目中进行一些更改。我不得不删除模型中的一些字段(称为“产品”)。因此,在它之后,我在浏览器中检查了我的 django restframework,并且该字段消失了。因此,对于我的后端,该字段不再存在。一切都很好,但是当我尝试添加新产品时出现错误。因为我的数据库仍然希望我填写已删除的字段。

该字段仍在我的数据库中,但未在 0001_initial.py 中描述。所以我认为 makemigrations 完成了它的工作,但迁移失败了?

我已经做了以下事情:

python manage.py makemigrations
python manage.py migrate

还有

python manage.py makemigrations (changed app)
python manage.py migrate

我真的不知道原因。因为该字段在我的项目和 initial.py 中已删除,所以我认为 migrate 会检测到它并更改数据库。

【问题讨论】:

    标签: python django postgresql migrate


    【解决方案1】:

    迁移是累积的记录。初始迁移描述了您最初创建数据库时的状态。后续更改由进一步的迁移文件描述,每个迁移文件都将您的数据库带到创建迁移时的状态。

    因此,当您运行 makemigrations 时,将创建一个迁移 0002,其中将包含删除您的字段的代码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-11-01
      • 2021-02-07
      • 2020-09-26
      • 2018-12-11
      • 2019-01-17
      • 2021-06-01
      • 2019-11-11
      • 2016-07-27
      相关资源
      最近更新 更多