django syncdb和一个更新的模型

我最近更新了我的模型,添加了一个BooleanField,但是当我执行python manage.py syncdb ,它不会将新字段添加到模型的数据库中。 我怎样才能解决这个问题 ?

从Django 1.7开始

Django已经build立了对迁移的支持 – 查看文档 。

对于Django 1.6及更早的版本

Django不支持迁移。 Django有一个可插入的应用程序,但它确实如此,而且效果很好。 这叫南方 。

Django目前不会自动执行此操作。 您的select是:

  1. 从数据库中删除表,然后使用syncdb以新的forms重新创build表。
  2. 使用python manage.py sql (appname)打印出数据库的python manage.py sql (appname) ,find添加的字段并使用alter table SQL命令手动添加。 (这也将允许您为当前loggingselect该字段的值。)
  3. 使用南 (每多米尼克的答案 )。

按着这些次序:

  1. 使用dumpdata management命令将数据导出到夹具
  2. 放下桌子
  3. 运行syncdb
  4. 使用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