DatabaseError: таблица OmniCloud_App_user не имеет столбца с именем пользователя - PullRequest
0 голосов
/ 08 октября 2011

Итак, я получил это при попытке добавить пользователя в базу данных.И я подумал, интересно, какие колонки у него есть?Поэтому я попросил sql ...

DatabaseError: table OmniCloud_App_user has no column named username
>>> 
root@Harold:~/OmniCloud/omnicloud# python manage.py sql OmniCloud_App
BEGIN;
CREATE TABLE "OmniCloud_App_user" (
    "id" integer NOT NULL PRIMARY KEY,
    "email" varchar(75) NOT NULL,
    "username" varchar(25) NOT NULL,
    "password" varchar(30) NOT NULL
)
;

Эй!Вот оно!Зачем ему злиться на две следующие строки, если кажется, что на самом деле он сказал столбец?

>>> u = User(email="gmail@gmail.com", username="gmail", password="gmail")
>>> u.save()

Также не то, как я определяю класс User, и он говорит, что user не имеет столбцаназывается имя пользователя.Почему оно идет в нижнем регистре?

Ответы [ 2 ]

2 голосов
/ 08 октября 2011
  • Вы запускали $> python manage.py syncdb?
  • Изменили ли вы модель (добавили имя пользователя) с момента первого запуска syncdb?
  • Вы используете Юг? Если нет, то вам, вероятно, стоит узнать об этом.

Syncdb работает только на новых моделях. Вы должны сами разобраться с миграциями, и вот тут приходит Юг.

Кроме того, вы можете изменить базу данных самостоятельно или использовать другое приложение, которое ближе к этому методу, называемое nashvegas.

Это приблизительный SQL, который вам нужен.

ALTER TABLE OmniCloud_App_user ADD COLUMN "username" varchar(25) NOT NULL;
0 голосов
/ 08 октября 2011

manage.py sql дает SQL, который будет у таблицы , если вы попросите syncdb создать его сейчас. Он не показывает вам, что таблица на самом деле имеет - для этого вам нужно будет зайти в вашу оболочку БД и попросить описать таблицу для вас. Затем вам нужно будет изменить его либо непосредственно там, либо с помощью такого инструмента миграции, как South.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...