2008-11-16 19 views
5

estoy teniendo un error en el que no estoy seguro de lo que lo causóerror "Unknown columna 'user_id' en vista de Django

Aquí está el error:.

Exception Type:  OperationalError 
Exception Value:  
(1054, "Unknown column 'user_id' in 'field list'") 

¿Alguien sabe por qué estoy ? conseguir este error no puede averiguarlo Todo parece estar bien

Mi código de la vista es el siguiente:..

if "login" in request.session: 
    t = request.POST.get('title', '') 
    d = request.POST.get('description', '') 
    fid = request.session["login"] 
    fuser = User.objects.get(id=fid) 
    i = Idea(user=fuser, title=t, description=d, num_votes=1) 
    i.save() 
    return HttpResponse("true", mimetype="text/plain") 
else: 
    return HttpResponse("false", mimetype="text/plain") 

I apprec ¡Ayúdame! ¡Gracias!

Editar: También una pregunta secundaria. ¿Utilizo objects.get (id = o objects.get (pk =?) Si utilizo una clave principal, ¿necesito declarar un campo de identificación o un índice en el modelo?

Editar: Estos son los modelos relevantes :??

class User (models.Model): 
    first_name = models.CharField(max_length=200) 
    last_name = models.CharField(max_length=200) 
    email = models.CharField(max_length=200) 
    password = models.CharField(max_length=200) 

class Idea (models.Model): 
    user = models.ForeignKey(User) 
    title = models.CharField(max_length=200) 
    description = models.CharField(max_length=255) 
    num_votes = models.IntegerField() 

Respuesta

4

Vas a tener que mostrar sus modelos para obtener ayuda real, pero parece que su mesa Idea no tiene una columna user_id ¿lo modificar la estructura de la tabla de SQL

+0

No toqué la estructura de la tabla SQL. Agregué mi modelo a la pregunta para mostrarlo. Corrí syncdb varias veces. – rksprst

+2

syncdb no cambia las estructuras de la tabla, solo puede crear tablas inexistentes. Por lo tanto, si cambia sus modelos, todavía tendrá tablas antiguas, y necesitará colocar tablas y volver a crearlas (o modificarlas manualmente). – che

+0

¡Impresionante! Gracias. Dejé caer todas las tablas y funcionó bien. – rksprst

5
  1. El campo user_id es la referencia FK de Idea a User. Parece li Si ha cambiado su modelo y no ha actualizado su base de datos, entonces tendrá este tipo de problema.

    Suelta la tabla anterior, vuelve a ejecutar syncdb.

  2. Las tablas de su modelo obtienen un campo id por defecto. Puede llamarlo id en sus consultas. También puede usar el sinónimo de pk.

    Si define su propio campo de clave principal, no obtiene el campo automático id. Pero aún puede usar pk para referirse a la clave principal.

+1

"pk" no es un sinónimo de ID, designa la columna de clave principal (me nombre diferente). Muy útil si no conoce (o no quiere) el nombre exacto de la columna de clave principal. – zgoda

+0

http://docs.djangoproject.com/en/dev/topics/db/queries/#the-pk-lookup-shortcut. PK significa el PK, ya sea el que definió en el modelo o el PK predeterminado, que será ID. –

0

Sí, dejé caer las tablas y todo funcionó muy bien. Sin embargo, tienes que ir a la base de datos y DROP. "manage.py flush" o "manage.py reset appname" no lo harán por sí mismos.

-Nick O

Cuestiones relacionadas