2013-07-29 5 views
5

मैं Django ट्यूटोरियल का भाग 2 पर हूं। यह त्रुटि जब कोशिश Django प्रशासन में एक "विकल्प" जोड़ने के लिए मैं मिलता हैटेबल poll_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 तालिका बनाता है, लेकिन यदि आप फ़ील्ड जोड़ते/बदलते/हटाते हैं तो माइग्रेशन नहीं करते हैं।

Django 1.7+ के लिए, आपको syncdb के बजाय माइग्रेशन का उपयोग करना चाहिए। Django < 1.7, south के लिए डेटाबेस माइग्रेशन करने के लिए अत्यधिक अनुशंसा की जाती है।

हालांकि, चूंकि आप ट्यूटोरियल के माध्यम से काम कर रहे हैं, और आपके पास कोई महत्वपूर्ण डेटा नहीं है, तो सबसे आसान काम तालिका छोड़ना और इसे फिर से बनाना है। डेटाबेस शेल में निम्न आदेश चलाएं:

drop table polls_choice; 

फिर तालिका को फिर से बनाने के लिए फिर से सिंकडब चलाएं।

यदि आपको अपने डीबी में किसी भी डेटा की आवश्यकता नहीं है, तो sqlite डीबी फ़ाइल को हटाने के लिए भी तेज़ होगा, फिर सिंकडब फिर से चलाएं।

+0

sqlite3 पर poll_choice को हटाने का तरीका नहीं है =/खोल में मेरी टेबल प्रदर्शित नहीं कर सकता – Liondancer

+2

@Liondancer आप कमांड के माध्यम से एक SQL डेटाबेस तक नहीं पहुंच सकते लाइन। आपकी सबसे अच्छी शर्त डेटाबेस फ़ाइल को हटाना, इसे पुन: बनाना, और फिर सिंकडब चलाएं। –

+0

@Ergusto धन्यवाद! वह चाल है! – Liondancer

5

क्या आपने Choice पर Poll पर विदेशी कुंजी बनाने से पहले python manage.py syncdb चलाया था? आपको डेटाबेस को हटाने और इसे फिर से चलाने की आवश्यकता हो सकती है।

+0

हाँ मैंने ऐसा किया है [[अभी भी काम नहीं कर रहा है = [ – Liondancer

संबंधित मुद्दे