2009-07-21 14 views
5

मुझे अंतिम प्रविष्टि आईडी नहीं मिल सकती है जैसे मैं आमतौर पर करता हूं और मुझे यकीन नहीं है कि क्यों।Django - अंतिम डालने आईडी

मेरी नजर में:

comment = Comments(...) 
comment.save() 
comment.id #returns None 

मेरी मॉडल में:

class Comments(models.Model): 
    id = models.IntegerField(primary_key=True) 

किसी को भी करने से पहले इस समस्या में पड़ गया है? आम तौर पर जब मैं सेव() विधि को कॉल करता हूं, तो मुझे id.id के माध्यम से आईडी तक पहुंच है, लेकिन इस बार यह काम नहीं कर रहा है।

+0

लौटना चाहिए क्या तुमने कभी आईडी सेट करें ? आप ऑटोफिल्ड का उपयोग नहीं कर रहे हैं। – balpha

उत्तर

7

क्या आप comment = Comments(...) लाइन में id फ़ील्ड का मान सेट कर रहे हैं? यदि नहीं, तो आप Django को ऑटोफिल्ड के साथ प्राथमिक कुंजी का ख्याल रखने की बजाय फ़ील्ड को परिभाषित क्यों कर रहे हैं?

यदि आप इंटीजरफ़ील्ड में प्राथमिक कुंजी के रूप में निर्दिष्ट करते हैं तो उदाहरण के लिए Django स्वचालित रूप से इसे एक मान निर्दिष्ट नहीं करेगा।

+0

नहीं, मैं आईडी को परिभाषित नहीं करता हूं, यह स्वतः बढ़ता है। मुझे एहसास नहीं हुआ, धन्यवाद। – Joe

1

क्या आप विशेष रूप से प्राथमिक कुंजी के रूप में आईडी नामक एक नया इंटीजरफ़िल्ल्ड सेट करना चाहते हैं? क्योंकि Django पहले से ही आपके लिए मुफ्त में करता है ...

कहा जा रहा है, क्या आपने अपने टिप्पणी मॉडल से आईडी फ़ील्ड को हटाने का प्रयास किया है?

2

एक स्वचालित रूप से सेट प्राथमिक कुंजी उपयोग AutoField को परिभाषित करने के लिए:

class Comments(models.Model): 
    id = models.AutoField(primary_key=True) 
2

सीधे शब्दों में करना

c = Comment.object.latest() 

है कि आप पिछले डाला टिप्पणी

c.pk 

12 #last comment saved. 
+0

यह 'ऑब्जेक्ट' होना चाहिए, न कि 'ऑब्जेक्ट'। – Seether

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