django syncdb和一个更新的模型
我最近更新了我的模型,添加了一个BooleanField,但是当我执行python manage.py syncdb
,它不会将新字段添加到模型的数据库中。 我怎样才能解决这个问题 ?
从Django 1.7开始
Django已经build立了对迁移的支持 – 查看文档 。
对于Django 1.6及更早的版本
Django不支持迁移。 Django有一个可插入的应用程序,但它确实如此,而且效果很好。 这叫南方 。
Django目前不会自动执行此操作。 您的select是:
- 从数据库中删除表,然后使用syncdb以新的forms重新创build表。
- 使用
python manage.py sql (appname)
打印出数据库的python manage.py sql (appname)
,find添加的字段并使用alter table
SQL命令手动添加。 (这也将允许您为当前loggingselect该字段的值。) - 使用南 (每多米尼克的答案 )。
按着这些次序:
- 使用dumpdata management命令将数据导出到夹具
- 放下桌子
- 运行syncdb
- 使用loaddata management命令重新加载您的数据
正如在顶部的答案中所build议的,我尝试使用南 ,经过一个小时的沮丧迁移错误决定与Django的演变,而不是。
我觉得开始比南方更容易,第一次input./manage.py evolve --hint --execute
,所以我很高兴。
没有使用django在一段时间,但我似乎记得,syncdb执行数据库表的alter命令。 你必须放下桌子,然后再次运行,它会重新创build。
编辑:对不起,不执行改变。
如果使用Apache和MySQL运行Django,请在使用makemigrations进行迁移后重新启动apache。
在Django 1.6
-
首先我们运行
python manage.py sql <app name>
-
然后我们必须运行
python manage.py syncdb