2013-06-25 3 views
7

में 'डिफ़ॉल्ट = सही' का बिंदु क्या है मेरे पास एक साधारण सवाल है: मेरे मॉडल में, मैं अपनी तालिकाओं में से एक के लिए संरचना को परिभाषित कर रहा हूं; हालांकि, मैं Booleanfield: own के लिए डिफ़ॉल्ट मान सेट अप करना चाहता हूं, लेकिन ऐसा लगता है कि यह ठीक से काम नहीं कर रहा है।BooleanField

class Books(models.Model): 
    title = models.CharField(max_length=100) 
    own = models.BooleanField(default=True) 

जब मैं mysql में मेरी मेज desc, यह क्या मैं (ध्यान दें कि खुद डिफ़ॉल्ट अशक्त है) मिल गया है:: यहाँ मॉडल में मेरी कोड है

enter image description here

इसके अलावा, जब मैं निम्नलिखित करने की कोशिश:

INSERT INTO `counters_books` (`title`) VALUES ('My Brain is Open') 

मैं इस त्रुटि मिलती है:

ERROR 1364 (HY000): Field 'own' doesn't have a default value 

पीएस मैं समझता हूं कि NullBooleanField का उपयोग करके मैं समस्या को हल करने में सक्षम हूं; हालांकि, default का बिंदु क्या है यदि मैं एक पंक्ति नहीं डाल सकता जब तक कि मुझे उस फ़ील्ड के लिए कोई मान निर्दिष्ट नहीं करना पड़े?

+0

आप डेटाबेस/तालिका बनाने के बाद डिफ़ॉल्ट चयन किया है? – mipadi

+0

@ मिपाडी: मुझे यकीन नहीं है कि इसका क्या अर्थ है; लेकिन 'python manage.py syncdb' भागने से पहले कोई' पुस्तकें 'तालिका नहीं थी! – Thuglife

+2

सही परीक्षण 'पुस्तक = पुस्तक ('1 9 84') है; book.save() ', कच्चे एसक्यूएल" INSERT "नहीं। ओआरएम का पूरा बिंदु कभी भी सादे एसक्यूएल लिखना नहीं है। –

उत्तर

5

default एसक्यूएल स्तर - it's handled at the model level पर संभाला नहीं जाता है। इस प्रकार, आपके डीबी पर्यावरण में एक कच्ची एसक्यूएल क्वेरी एक त्रुटि फेंक देगा। अपने Django वातावरण में इस प्रयास करें:

>> book_obj = Book('Harry Potter') 
>> book_obj.save() 

जब मॉडल के स्तर पर किया, डिफ़ॉल्ट मान अपने एसक्यूएल डीबी में सम्मिलित किया जाएगा

+0

फेयर कुडोस @PaulaScardine पर। – JcKelley

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