更改django中的模型会导致数据库损坏?

时间:2010-04-03 13:20:18

标签: python django django-models django-admin

我在models.py文件中添加和删除了字段,然后运行manage.py syncdb。通常我必须退出shell并在syncdb执行任何操作之前重新启动它。然后即使在那之后,我在尝试访问管理页面时遇到错误,似乎我添加的某些新字段仍未显示在模型中:

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

3 个答案:

答案 0 :(得分:9)

Django不为您执行数据库迁移,即,如果添加新字段,Django将不会修改您的数据库架构。

你可以:

  1. 删除已更改的表并再次执行syncdb。当您开发应用程序并且数据库中没有任何实际数据时,这是合理的。
  2. 使用执行数据库迁移的South等迁移工具(如hibernate更新脚本)。
  3. 手动编辑数据库,添加/删除以前存在的表的相应字段。

答案 1 :(得分:4)

对我来说,(只要您使用测试数据执行此操作,而不是在生产环境中执行此操作),只需吹掉test.db并执行新的./manage.py syncdb即可。只是值得深思... ...

答案 2 :(得分:2)

为了扩展@ Barthelemy的答案,有几个Django migration tools