渲染时捕获DatabaseError:没有这样的列:bookmarks_bookmark.title

时间:2011-08-28 01:59:59

标签: django

从“使用django学习网站开发”学习django。在第3章,构建书签数据模型,我按照给出的指令和代码 -

from django.contrib.auth.models import User
class Bookmark(models.Model):
title = models.CharField(maxlength=200)
user = models.ForeignKey(User)
link = models.ForeignKey(Link)

我改变了

title = models.CharField(maxlength=200)

进入

title = models.CharField(max_length=200)

因为我正在发送错误消息。之后,我运行了python manage.py syncdb,然后是python manage.py sql书签。当我检查http://localhost:8000/user/my_username时,收到以下错误消息:

Request Method:     GET
Request URL:    http://127.0.0.1:8000/user/j/
Django Version:     1.3
Exception Type:     TemplateSyntaxError
Exception Value:    

**Caught DatabaseError while rendering: no such column: bookmarks_bookmark.title**

仔细研究一下,我了解到我正在使用的数据库sqlite3找不到bookmarks_bookmark.title。我回到书中以确保我正确地复制了所有内容,除了我改变的部分(max_length)之外我做了。当我运行python manage.py sql书签时,它给了我 -

BEGIN;
CREATE TABLE "bookmarks_bookmark" (
"id" integer NOT NULL PRIMARY KEY,
"title" varchar(200) NOT NULL,
"user_id" integer NOT NULL REFERENCES
"auth_user" ("id"),
"link_id" integer NOT NULL REFERENCES
"bookmarks_link" ("id"),
);
CREATE TABLE "bookmarks_link" (
"id" integer NOT NULL PRIMARY KEY,
"url" varchar(200) NOT NULL UNIQUE
);
COMMIT;

我该如何解决这个问题?谢谢!

1 个答案:

答案 0 :(得分:3)

手动删除工作。

sqlite3 yourdb.db 
> drop table bookmarks_bookmark;
> .quit
cd yourpythonproj
python2 manage.py syncdb
python2 manage.py runserver

bash脚本

#!/bin/bash
sqlite3 ../yourdb.db 'drop table yourtable'
python2 manage.py syncdb