2008-11-16 5 views
5

У меня ошибка, где я не уверен, что его причиной«Неизвестная ошибка столбца„user_id“ввиду Джанго

Здесь ошибка:.

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

Кто-нибудь знает, почему я ? получаю эту ошибку я не могу понять это все, кажется, хорошо

мой взгляд код ниже:..

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 Помогите! Благодаря!

Редактировать: Также вопрос стороны. Я использую objects.get (id = или objects.get (pk =?) Если я использую первичный ключ, мне нужно объявить поле id или индекс в модели?

Редактировать: :?

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() 

ответ

4

вы должны показать свои модели, чтобы получить реальную помощь, но это выглядит как ваша таблица идея не имеет столбца user_id ли вы изменить структуру таблицы SQL

+0

Я не касался структуры таблицы SQL. Я добавил свою модель к вопросу, чтобы показать ее. Я запускал syncdb несколько раз. – rksprst 2008-11-16 02:48:48

+2

syncdb не меняет структуры таблиц, он может создавать только несуществующие таблицы. Таким образом, если вы измените свои модели, у вас все еще будут старые таблицы, и вам нужно будет отбросить таблицы и снова их создать (или изменить их вручную). – che 2008-11-16 02:57:43

5
  1. Поле user_id является ссылкой FK от Idea до User. ke вы изменили свою модель и не обновили свою базу данных, тогда у вас будет такая проблема.

    Оставьте старый стол, повторите синхронизацию.

  2. Ваши таблицы моделей получают поле id по умолчанию. Вы можете называть его id в своих запросах. Вы также можете использовать синоним pk.

    Если вы указали собственное поле основного ключа, вы не получите поле автоматического id. Но вы можете использовать pk для обозначения основного ключа.

0

Да, я бросил столы, и все это отлично поработало. Тем не менее, вы должны действительно зайти в базу данных и УБИТЬ их. «manage.py flush» или «manage.py reset appname» не будут делать это сами.

-Nick O

Смежные вопросы