django syncdb 与更新后的模型

86 投票
7 回答
52021 浏览
提问于 2025-04-15 15:16

我最近更新了我的模型,给它添加了一个布尔字段(就是可以是“真”或“假”的那种)。但是当我运行 python manage.py syncdb 这个命令的时候,它并没有把这个新字段加到数据库里。请问我该怎么解决这个问题呢?

7 个回答

11

按照以下步骤操作:

  1. 使用 dumpdata 命令把你的数据导出到一个文件里。
  2. 删除这个表。
  3. 运行 syncdb 命令。
  4. 使用 loaddata 命令从刚才导出的文件里重新加载你的数据。
14

Django 现在并不会自动处理这个问题。你可以选择以下几种方法:

  1. 从数据库中删除这个表,然后用 syncdb 命令重新创建一个新的表。
  2. 使用 python manage.py sql (appname) 命令打印出数据库的 SQL 语句,找到新增字段的那一行,然后手动用 alter table SQL 命令添加它。(这样你还可以为当前记录选择字段的值。)
  3. 使用 South 工具(参考 Dominic 的回答)。
101

从Django 1.7开始

Django内置了迁移的支持——你可以查看一下官方文档

对于Django 1.6及之前的版本

Django本身不支持迁移功能。不过,有一个可以添加到Django中的插件,正好可以实现这个功能,而且效果很好。这个插件叫做South

撰写回答