目前我正在使用默认的管理门户网站,它运行正常。然后在models.py中我尝试添加一个字段,如下所示:
class MyModel(models.Model):
# new field is 'info'
info = models.CharField(max_length=100)
MyModel已经成功定义并在上面的代码中使用我只想添加一个字段。我重新运行同步
python manage.py syncdb
Creating tables ...
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)
然而,当我尝试使用接口
时,Django会抛出错误column myproject_mymodel.info does not exist
我做错了什么?
答案 0 :(得分:3)
manage.py syncdb
只会创建不存在的表,不能用于添加或删除列,也不能用于修改列。
我建议阅读Django Book的以下章节(免费在线):
Chapter 10: Advanced Models
以下是该章中添加字段的步骤:
首先,在开发环境中执行这些步骤(即,不在生产服务器上):
- 将字段添加到模型中。
- 运行
manage.py sqlall [yourapp]
查看 模型的新CREATE TABLE
语句。请注意该列 新领域的定义。- 启动数据库的交互式 shell(例如
psql
或mysql
,或者您可以使用manage.py dbshell
)。执行添加新列的ALTER TABLE
语句。- 启动 带有
醇>manage.py shell
的Python交互式shell并验证 通过导入模型和正确添加新字段 从表中选择(例如,MyModel.objects.all()[:5]
)。如果你 正确更新数据库,语句应该没有 错误。然后在生产服务器上执行以下步骤:
- 启动数据库的交互式shell。
- 执行您在开发环境步骤的第3步中使用的
ALTER TABLE
语句。- 将字段添加到模型中。如果您正在使用源代码修订控制并且在开发环境步骤1中检查了您的更改,那么现在是时候在生产服务器上更新代码(例如,
svn update
,使用Subversion)。- 重新启动Web服务器以使代码更改生效。
醇>