从“使用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;
我该如何解决这个问题?谢谢!
答案 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