我最近更新了我的模型,为它添加了一个BooleanField但是当我执行python manage.py syncdb
时,它不会将新字段添加到模型的数据库中。我该如何解决这个问题?
答案 0 :(得分:100)
Django内置了对迁移的支持 - 请查看the documentation。
Django不支持开箱即用的迁移。 Django有一个可插拔的应用程序可以做到这一点,而且效果很好。它被称为South。
答案 1 :(得分:14)
Django目前不会自动执行此操作。您的选择是:
python manage.py sql (appname)
为数据库打印SQL,找到该字段的添加行,并使用alter table
SQL命令手动添加。 (这也允许您为当前记录选择字段的值。)答案 2 :(得分:11)
答案 3 :(得分:8)
正如在最佳答案中所建议的那样,我尝试使用South,在obscure migration errors感到沮丧的一小时之后决定改为使用Django Evolution。
我认为开始使用比南方更容易,并且在我第一次键入./manage.py evolve --hint --execute
时效果非常好,所以我很满意。
答案 4 :(得分:2)
暂时没有使用django,但我似乎记得syncdb确实在db表上执行alter命令。你必须放弃表然后再次运行它将再次创建。
编辑:抱歉不执行更改。
答案 5 :(得分:1)
在django 1.6
首先我们运行 - python manage.py sql <app name>
然后我们必须运行 - python manage.py syncdb
答案 6 :(得分:0)
如果您使用Apache和MySQL运行Django,请在使用 makemigrations 进行迁移后重启apache。