Django,南。无法添加新字段

时间:2014-07-28 22:07:25

标签: django migration django-south

我必须在模型中添加一个新字段,这给我带来了很多麻烦。 所以,我尝试进行虚假迁移,然后再次迁移,不起作用。然后我尝试了其他一些不起作用的东西。

然后我累了,从数据库中删除了south_migrationhistory表,从我的应用程序中删除了“migrations”文件夹,并从头开始。在每个应用程序上运行syncdb并“转换为南”,然后在每个应用程序上“迁移”,每次都“无需迁移”。

现在我得到了之前遇到的同样错误:“列不存在”。那是我想要添加到我的表中的列。如果我从数据库中删除了south_migrationhistory表并删除了“migrations”文件夹,我不知道为什么会出现此错误。

在这里完全迷失和担心。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:3)

让我们来看看你说的话:

  1. “convert to south”将创建初始迁移并伪造应用程序
  2. “迁移”:如果您所做的只是转换为南方,则无需迁移。
  3. 到目前为止,它的表现与预期一致。

    您真正需要做的是使用您的代码库运行“convert to south”,使其处于与您的数据库匹配的状态,即从models.py中删除缺少的列

    然后,您需要将新列添加回models.py,运行python manage.py schemamigration myapp --auto,这将生成SQL语句以添加缺少的字段,然后您需要运行migrate命令。

    正在发生的事情是你的“转换为南方”认为遗失的专栏已经存在。它没有。

    另一个解决方案是不再对south 做任何事情,并通过SQL手动将缺少的列添加到数据库中。使用新南迁移的未来部署仍然有效,因为CREATE TABLE语句将包含您缺少的列。