Capturado DatabaseError mientras se renderiza: no existe tal columna: bookmarks_bookmark.title

Aprendiendo django de "aprender el desarrollo de sitios web usando django". En el capítulo 3, construyendo un modelo de datos de marcadores, seguí las instrucciones y el código dados excepto por:

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

donde cambié

title = models.CharField(maxlength=200)

dentro

title = models.CharField(max_length=200)

ya que recibía un mensaje de error. Después de eso, ejecuté python manage.py syncdb, luego, python manage.py sql bookmarks. Cuando comprobé http://localhost:8000/user/my_username, Recibo este mensaje de error:

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**

Buscando esto, descubrí que sqlite3, la base de datos que estaba usando, no puede encontrar bookmarks_bookmark.title. Volví al libro para asegurarme de tener todo copiado correctamente, y lo hice, excepto por la parte que cambié (max_length). Cuando ejecuté los marcadores de python manage.py sql, me dio ...

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;

¿Cómo puedo solucionar esto? ¡Gracias!

preguntado el 28 de agosto de 11 a las 01:08

Me siento un poco atontado en este momento, así que esto podría estar muy mal, pero ¿intentaste hacer un manage.py syncdb? -

intente eliminar su archivo de datos sqlite y vuelva a ejecutar syncdb -

1 Respuestas

Trabajos de borrado manual.

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

script bash

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

Respondido 31 ago 11, 17:08

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.