Ошибка базы данных при рендеринге: такой колонки нет: bookmarks_bookmark.title - PullRequest
1 голос
/ 28 августа 2011

Изучение 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 bookmarks.Когда я проверил 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 bookmarks, он дал мне -

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 Ответ

3 голосов
/ 31 августа 2011

Ручное удаление работает.

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

bash script

#!/bin/bash
sqlite3 ../yourdb.db 'drop table yourtable'
python2 manage.py syncdb
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...