在Django中更改模型导致数据库损坏?

3 投票
3 回答
3415 浏览
提问于 2025-04-15 21:11

我在我的models.py文件中添加和删除了一些字段,然后运行了manage.py syncdb。通常我需要退出命令行界面,然后重新启动它,才能让syncdb生效。即使这样做了,我在尝试访问管理页面时还是遇到了错误,似乎我添加的一些新字段在模型中仍然没有显示出来:

Caught an exception while rendering: no such column: mySite_book.Title

3 个回答

2

为了进一步说明@Barthelemy的回答,这里有几个关于Django的迁移工具:

4

对我来说,只要你是在测试数据上操作,而不是在正式环境中,这样做会简单很多。你可以直接删除 test.db 文件,然后再运行 ./manage.py syncdb 来重新创建数据库。这只是给你的一点建议...

9

Django不会自动帮你处理数据库的迁移,也就是说,如果你添加了新的字段,Django不会去修改你的数据库结构。

你可以选择以下几种方法:

  1. 删除那些有变化的表,然后重新执行syncdb。这种方法在你开发应用的时候比较合理,因为那时候你的数据库里可能没有真实的数据。
  2. 使用像South这样的迁移工具,它可以帮你进行数据库的迁移(就像hibernate的更新脚本)。
  3. 手动编辑数据库,添加或删除之前存在的表中的相应字段。

撰写回答