2008-11-16 20 views
5

मैं एक त्रुटि जहां मुझे यकीन है कि यह क्या वजह से नहीं कर रहा हूँ हो रही है"अज्ञात स्तंभ 'user_id' Django दृश्य में त्रुटि

यहाँ त्रुटि है:।

Exception Type:  OperationalError 
Exception Value:  
(1054, "Unknown column 'user_id' in 'field list'") 

क्या किसी को पता है कि क्यों मैं कर रहा हूँ ? यह त्रुटि मिलती मैं इसे समझ नहीं सब कुछ ठीक हो रहा है

मेरा विचार कोड के नीचे है:।।

if "login" in request.session: 
    t = request.POST.get('title', '') 
    d = request.POST.get('description', '') 
    fid = request.session["login"] 
    fuser = User.objects.get(id=fid) 
    i = Idea(user=fuser, title=t, description=d, num_votes=1) 
    i.save() 
    return HttpResponse("true", mimetype="text/plain") 
else: 
    return HttpResponse("false", mimetype="text/plain") 

मैं apprec किसी भी मदद की पुष्टि करो! धन्यवाद!

संपादित करें: इसके अलावा एक साइड सवाल भी। क्या मैं ऑब्जेक्ट्स का उपयोग करता हूं .get (id = or items.get (pk =? अगर मैं प्राथमिक कुंजी का उपयोग करता हूं, तो क्या मुझे मॉडल में आईडी फ़ील्ड या इंडेक्स घोषित करने की आवश्यकता है?

संपादित करें: यहां प्रासंगिक मॉडल हैं ?

class User (models.Model): 
    first_name = models.CharField(max_length=200) 
    last_name = models.CharField(max_length=200) 
    email = models.CharField(max_length=200) 
    password = models.CharField(max_length=200) 

class Idea (models.Model): 
    user = models.ForeignKey(User) 
    title = models.CharField(max_length=200) 
    description = models.CharField(max_length=255) 
    num_votes = models.IntegerField() 

उत्तर

4

आप असली मदद पाने के लिए अपने मॉडल को दिखाने के लिए होगा, लेकिन अपने आइडिया मेज की तरह एक user_id स्तंभ नहीं है आप एसक्यूएल तालिका संरचना को संशोधित किया था यह लग रहा है

+0

मैंने SQL तालिका संरचना को स्पर्श नहीं किया। मैंने इसे दिखाने के लिए प्रश्न में अपना मॉडल जोड़ा। मैं कई बार syncdb भाग गया। – rksprst

+2

सिंकडीबी तालिका संरचनाओं को नहीं बदलता है, यह केवल nonexisting तालिकाओं को बना सकता है। इस प्रकार यदि आप अपने मॉडल बदलते हैं, तो आपके पास अभी भी पुरानी टेबल होगी, और तालिकाओं को छोड़ने और उन्हें फिर से बनाने की आवश्यकता होगी (या उन्हें मैन्युअल रूप से बदलें)। – che

+0

बहुत बढ़िया !! धन्यवाद। मैंने सभी टेबल गिरा दिए और यह ठीक काम किया। – rksprst

5
  1. user_id फ़ील्ड Idea से User से FK संदर्भ है। यह li दिखता है क्या आपने अपना मॉडल बदल दिया है, और अपना डेटाबेस अपडेट नहीं किया है, तो आपको इस तरह की समस्या होगी।

    पुरानी तालिका ड्रॉप करें, सिंकडीबी दोबारा शुरू करें।

  2. आपकी मॉडल तालिका डिफ़ॉल्ट रूप से id फ़ील्ड प्राप्त करती है। आप इसे अपने प्रश्नों में id पर कॉल कर सकते हैं। आप pk के पर्याय का भी उपयोग कर सकते हैं।

    यदि आप अपना प्राथमिक कुंजी फ़ील्ड परिभाषित करते हैं, तो आपको स्वचालित id फ़ील्ड नहीं मिलता है। लेकिन आप प्राथमिक कुंजी को संदर्भित करने के लिए अभी भी pk का उपयोग कर सकते हैं।

+1

"पीके" आईडी के लिए समानार्थी नहीं है, यह प्राथमिक कुंजी कॉलम निर्दिष्ट करता है (क्या मुझे अलग-अलग नाम दिया जा सकता है)। यदि आप प्राथमिक कुंजी कॉलम के लिए सटीक नाम नहीं जानते हैं (या नहीं चाहते हैं) बहुत आसान है। – zgoda

+0

http://docs.djangoproject.com/en/dev/topics/db/queries/#the-pk-lookup-shortcut। पीके का मतलब है पीके, या तो जिसे आप मॉडल में परिभाषित करते हैं या डिफ़ॉल्ट पीके, जो आईडी होगा। –

0

हाँ, मैंने टेबल छोड़ दिए और यह सब बहुत अच्छा काम किया। हालांकि, आपको वास्तव में डेटाबेस में जाना होगा और उन्हें डीआरओपी करना होगा। "manage.py flush" या "manage.py रीसेट ऐपनाम" स्वयं इसे नहीं करेगा।

-निक ओ

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