如何在Django 1.6和sqlite 2.8中使用迁移工具?

时间:2015-02-16 15:53:02

标签: python django sqlite django-models

我是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类的新东西。

1 个答案:

答案 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