我是Django和一般数据库的新手。我制作了一个新的应用程序,并在其模型中添加了一个类。之后我在课堂上又添了一个东西,然后运行了这个命令" python3.2 manage.py sql todo"。我得到了这个
CREATE TABLE "todo_item" (
"id" integer NOT NULL PRIMARY KEY,
"description" text NOT NULL,
"dueDate" date NOT NULL,
"status" varchar(20) NOT NULL
);
COMMIT;
我认为会这样做,但我仍然会收到此错误:
Exception Value: no such column: todo_item.status
status是我要添加到item类的新东西。
答案 0 :(得分:4)
manage.py sql todo
只打印SQL以创建表。不对db执行此SQL。
要创建表格,您应该运行manage.py syncdb
。
但我建议您使用提供真实迁移的South应用。
更新:要将新列添加到现有空表,请运行以下命令:
echo "ALTER TABLE todo_item ADD COLUMN status VARCHAR(20) NOT NULL;" | python manage.py dbshell
如果表格不为空并且您无法从中删除数据,则必须为该列设置默认值:
echo "ALTER TABLE todo_item ADD COLUMN status VARCHAR(20) NOT NULL DEFAULT 'new';" | python manage.py dbshell