Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

"Unknown column 'user_id' error in django view

I'm having an error where I am not sure what caused it.

Here is the error:

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

Does anyone know why I am getting this error? I can't figure it out. Everything seems to be fine.

My view code is below:

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 appreciate any help! Thanks!

Edit: Also a side question. Do I use objects.get(id= or objects.get(pk= ? If I use a primary key, do I need to declare an id field or an index in the model?

Edit: Here are the relevant models:

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()
like image 553
rksprst Avatar asked Nov 16 '08 00:11

rksprst


1 Answers

  1. The user_id field is the FK reference from Idea to User. It looks like you've changed your model, and not updated your database, then you'll have this kind of problem.

    Drop the old table, rerun syncdb.

  2. Your model tables get an id field by default. You can call it id in your queries. You can also use the synonym of pk.

    If you define your own primary key field you, you don't get the automatic id field. But you can still use pk to refer to the Primary Key.

like image 70
S.Lott Avatar answered Sep 29 '22 14:09

S.Lott