python - 表 polls_choice 没有名为 poll_id 的列

标签 python django sqlite

我正在学习 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

http://pastebin.com/g4KvigqX

非常感谢任何帮助!谢谢!

最佳答案

听起来您在运行 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/

相关文章:

python - Django Websockets 数据转到错误的套接字

database - 我应该使用平面文件还是数据库来存储 Android 上随机报价应用程序的报价?

python - TensorFlow 是否将一台机器的所有 CPU 视为一个设备?

Python切片返回错误值?

python - 在 Django 中处理动态生成表单的更好方法

python - Django - .values 和 .annotate 产生意外结果

python - 命名空间和类

python - 如何使用区 block 链对文档进行数字签名?

android - SQLite 创建表时出现语法错误

sqlite - 从 C# 查询 Thunderbird 的 SQLite 消息数据库