所以我在尝试将用户添加到数据库时得到了这个。我想,我想知道它有哪些列?所以我要求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
没有名为username的列。为什么它变成小写?
答案 0 :(得分:2)
$> python manage.py syncdb
?Syncdb仅适用于新型号。你必须自己解决迁移问题,这就是South的用武之地。
或者,您可以自己修改数据库,或者使用另一个更接近该方法的应用程序,称为nashvegas。
这是您需要的SQL的近似值。
ALTER TABLE OmniCloud_App_user ADD COLUMN "username" varchar(25) NOT NULL;
答案 1 :(得分:0)
manage.py sql
立即创建它, syncdb
会为表 提供SQL。它没有显示实际表的内容 - 因为您将不得不进入db shell并要求它为您描述该表。然后,您需要直接修改它,或者通过像South这样的迁移工具进行修改。