2013-07-29 7 views
5

私はDjangoチュートリアルのパート2にいます。これは試してみるにはDjangoの管理で「選択」を追加するときに私が取得エラーですテーブルpolls_choiceにpoll_idという名前のカラムがありません

DatabaseError: table polls_choice has no column named poll_id 

これは私がコマンドを実行したときに、私が得るものです

python manage.py sql polls 

BEGIN; 
CREATE TABLE "polls_poll" (
    "id" integer NOT NULL PRIMARY KEY, 
    "question" varchar(200) NOT NULL, 
    "pub_date" datetime NOT NULL 
) 
; 
CREATE TABLE "polls_choice" (
    "id" integer NOT NULL PRIMARY KEY, 
    "poll_id" integer NOT NULL REFERENCES "polls_poll" ("id"), 
    "choice_text" varchar(200) NOT NULL, 
    "votes" integer NOT NULL 
) 
; 

COMMIT; 

これは私のsettings.py

です

http://pastebin.com/g4KvigqX

何かお手伝いがあります。ありがとうございました!

答えて

11

syncdbを実行した後で、ポーリング外部キーを追加したようです。 syncdbはテーブルを作成しますが、フィールドを追加/変更/削除すると移行は行いません。

Django 1.7以降では、syncdbの代わりに移行を使用する必要があります。 Django < 1.7の場合、データベースの移行にはsouthを強くお勧めします。

しかし、チュートリアルの作業中に重要なデータがないので、最も簡単なことはテーブルを削除して再作成することです。データベースシェルで次のコマンドを実行します。

drop table polls_choice; 

次に、syncdbを再度実行してテーブルを再作成します。

dbにデータが必要ない場合は、sqlite dbファイルを削除してからsyncdbを再度実行するとさらに高速になります。

+0

sqlite3でpolls_choiceを削除する方法がわかりません= /シェルにテーブルを表示できないようです – Liondancer

+2

@Liondancerコマンドを使用してsqliteデータベースにアクセスすることはできませんライン。データベースファイルを削除して再作成し、syncdbを再度実行することをお勧めします。 –

+0

@Ergustoありがとう!それがトリックでした! – Liondancer

5

ChoicePollに外部キーを作成する前にpython manage.py syncdbを実行しましたか?データベースを削除して再度実行する必要があるかもしれません。

+0

はい私はしました= [まだ動作していません= [ – Liondancer

関連する問題