2015-05-09 81 views
0

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

但现在我不得不改变我的Python项目的东西。我必须删除模型中的某个字段(称为“产品”)。所以之后我在浏览器中检查了我的django restframework,现场不见了。所以该字段在我的后端不再存在。一切都很好,但是当我试图添加一个新产品时,我得到一个错误。因为我的数据库仍然期望我填写已删除的字段。

该字段仍在我的数据库中,但未在0001_initial.py中描述。所以我认为这些改革做了它的工作,但移民失败了?

我已经做了以下内容:

python manage.py makemigrations 
python manage.py migrate 

而且还

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

我真的不知道原因。由于该字段在我的项目和initial.py中被删除,因此我认为迁移将检测到它并更改数据库。

回答

1

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

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