2013-07-29 10 views
5

Sono nella parte 2 del tutorial di Django. Questo è l'errore che ottengo quando provo ad aggiungere una "scelta" in amministrazione Djangotabella polls_choice non ha una colonna denominata poll_id

DatabaseError: table polls_choice has no column named poll_id 

Questo è ciò che ottengo quando faccio funzionare l'ordine

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; 

Questo è il mio settings.py

http://pastebin.com/g4KvigqX

Qualsiasi aiuto è molto apprezzato! grazie!

risposta

11

Sembra che tu abbia aggiunto la chiave esterna del sondaggio dopo aver eseguito syncdb. Lo syncdb crea la tabella, ma non esegue le migrazioni se si aggiungono/modificano/rimuovono campi.

Per Django 1.7+, è necessario utilizzare le migrazioni anziché syncdb. Per Django < 1.7, south è altamente raccomandato per eseguire migrazioni di database.

Tuttavia, dal momento che si sta utilizzando il tutorial e non si dispone di dati importanti, la cosa più semplice da fare è rilasciare la tabella e ricrearla. Eseguire il seguente comando in una shell di database:

drop table polls_choice; 

Quindi eseguire nuovamente syncdb per ricreare la tabella.

Se non hai bisogno di dati nel tuo db, sarebbe ancora più rapido cancellare il file db sqlite, quindi eseguire di nuovo syncdb.

+0

Non sei sicuro di come eliminare polls_choice su sqlite3 =/Non riesco a visualizzare i miei tavoli nel guscio – Liondancer

+2

@Liondancer Non è possibile accedere a un database SQLite attraverso il comando linea. La soluzione migliore è eliminare il file del database, ricrearlo ed eseguire nuovamente syncdb. –

+0

@Ergusto grazie! quello ha fatto il trucco! – Liondancer

5

Hai eseguito python manage.py syncdb prima di creare la chiave esterna su Choice su Poll? Potrebbe essere necessario eliminare il database ed eseguirlo di nuovo.

+0

Sì l'ho fatto [= = ancora non funziona [ – Liondancer

Problemi correlati