我正在学习 Django 教程的第 2 部分。这是我在 Django 管理中尝试添加“选择”时遇到的错误
DatabaseError: table polls_choice has no column named poll_id
这是我运行命令时得到的结果
python manage.py sql polls
BEGIN;
CREATE TABLE "polls_poll" (
"id" integer NOT NULL PRIMARY KEY,
"question" varchar(200) NOT NULL,
"pub_date" datetime NOT NULL
)
;
CREATE TABLE "polls_choice" (
"id" integer NOT NULL PRIMARY KEY,
"poll_id" integer NOT NULL REFERENCES "polls_poll" ("id"),
"choice_text" varchar(200) NOT NULL,
"votes" integer NOT NULL
)
;
COMMIT;
这是我的settings.py
非常感谢任何帮助!谢谢!
最佳答案
听起来您在运行 syncdb 后添加了 poll 外键。 syncdb
创建表,但如果您添加/更改/删除字段则不会进行迁移。
对于 Django 1.7+,你应该使用 migrations 而不是 syncdb。对于 Django < 1.7,south强烈建议进行数据库迁移。
但是,由于您正在学习本教程,并且没有任何重要数据,所以最简单的做法是删除该表并重新创建它。在数据库 shell 中运行以下命令:
drop table polls_choice;
然后再次运行 syncdb 以重新创建表。
如果您不需要数据库中的任何数据,删除 sqlite 数据库文件会更快,然后再次运行 syncdb。
关于python - 表 polls_choice 没有名为 poll_id 的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17922198/