अशक्त = सच खाली = सच डिफ़ॉल्ट = 0Django models.py में, डिफ़ॉल्ट, शून्य, और खाली के बीच क्या अंतर है?
क्या अंतर है? आप कब उपयोग करते हैं?
अशक्त = सच खाली = सच डिफ़ॉल्ट = 0Django models.py में, डिफ़ॉल्ट, शून्य, और खाली के बीच क्या अंतर है?
क्या अंतर है? आप कब उपयोग करते हैं?
प्रत्यक्ष:
Field.null
तो
True
, जैंगो डेटाबेस मेंNULL
के रूप में खाली मान संग्रहीत होगा। डिफ़ॉल्टFalse
है।ध्यान दें कि रिक्त स्ट्रिंग मान हमेशा
NULL
के रूप में नहीं रिक्त स्ट्रिंग के रूप में जमा हो जाएगी। गैर-स्ट्रिंग फ़ील्ड जैसे पूर्णांक, बूलियन और तिथियों के लिए केवलnull=True
का उपयोग करें। क्षेत्रों के दोनों प्रकार के लिए, आप भी अगर आप के रूप मेंnull
पैरामीटर केवल डेटाबेस भंडारण (blank
देखें) को प्रभावित करता है रूपों में खाली मान की अनुमति के लिए, इच्छाblank=True
स्थापित करने के लिए की आवश्यकता होगी।स्ट्रिंग-आधारित फ़ील्ड जैसे
CharField
औरTextField
परnull
का उपयोग करने से बचें, जब तक आपके पास कोई उत्कृष्ट कारण न हो। एक स्ट्रिंग आधारित क्षेत्रnull=True
है, तो इसका मतलब है कि इसके लिए "कोई डेटा" दो संभावित मान हैं: शून्य, और रिक्त स्ट्रिंग। ज्यादातर मामलों में, "कोई डेटा नहीं" के लिए दो संभावित मान होने के लिए अनावश्यक है; Django सम्मेलन खाली स्ट्रिंग का उपयोग करना है,NULL
नहीं।
Field.blank
तो
True
, क्षेत्र को खाली होने की अनुमति दी है। डिफ़ॉल्टFalse
है।ध्यान दें कि यह
null
से अलग है।null
जबकिblank
सत्यापन से संबंधित है, डेटाबेस से संबंधित विशुद्ध रूप से है। यदि किसी फ़ील्ड मेंblank=True
है, तो Django की व्यवस्थापक साइट पर सत्यापन खाली मूल्य की प्रविष्टि की अनुमति देगा। यदि किसी फ़ील्ड मेंblank=False
है, तो फ़ील्ड की आवश्यकता होगी।
Field.default
क्षेत्र के लिए डिफ़ॉल्ट मान। यह एक मूल्य या एक कॉल करने योग्य वस्तु हो सकती है। यदि कॉल करने योग्य है तो हर बार एक नई वस्तु बनाई जाती है।
आप यह सब समझ में नहीं आता है?
:
null
यह सच है, तो Django डेटाबेस में शून्य के रूप में खाली मान संग्रहीत होगा। डिफ़ॉल्ट गलत है।
blank
यदि सही है, तो क्षेत्र को खाली होने की अनुमति है। डिफ़ॉल्ट गलत है।
default
फ़ील्ड के लिए डिफ़ॉल्ट मान।
आप "default
" का उपयोग कर सकते मूल्य है कि प्रश्न में क्षेत्र के लिए उपयोग किया जाएगा अपने कोड को स्पष्ट रूप से एक मूल्य के लिए सेट नहीं किया जाना चाहिए निर्धारित करने के लिए।
उपयोग फ़ॉर्म सत्यापन उद्देश्यों के लिए "blank
" - खाली = सच क्षेत्र एक खाली मूल्य
उपयोग "null
" करने के लिए सेट किया जा करने की अनुमति देगा आप के रूप में "अशक्त" में एक खाली मान संग्रहीत करना चाहते हैं डीबी। हालांकि, इसे किसी खाली स्ट्रिंग में रिक्त मान या 0 को किसी दिए गए फ़ील्ड के लिए उपयुक्त के रूप में सेट करने के लिए पसंद किया जाता है।
Null = None
Blank = ""
Default = ""
शायद जितना हो सके उतने लेमेन के रूप में।
खाली का अर्थ है कि यह शून्य नहीं है और इसके बजाय कुछ डेटा है जो उस डेटाटाइप के लिए "खाली" का प्रतिनिधित्व करता है, जो स्ट्रिंग के मामले में शायद एक खाली स्ट्रिंग है। संख्या के लिए यह 0.
हो सकता है कार्यान्वयन के संदर्भ में:
'खाली' फ़ील्ड सभी रूपों से मेल खाती है। निर्दिष्ट करता है कि यह मान फ़ॉर्म में आवश्यक है और संबंधित फॉर्म सत्यापन किया गया है। 'ट्रू' खाली मानों की अनुमति देता है।
'शून्य' फ़ील्ड डीबी स्तर से मेल खाता है। इसे डीबी में न्यूल या नॉट के रूप में सेट किया जाएगा।
इसलिए यदि रिक्त = सत्य के साथ व्यवस्थापक में खाली फ़ील्ड छोड़ दें, तो NULL को डीबी में खिलाया जाता है। अब यह एक त्रुटि फेंक सकता है अगर डीबी में उस विशेष कॉलम को न्यूल के रूप में निर्दिष्ट किया गया है।
मुझे लगता है कि यह हर किसी के लिए स्पष्ट नहीं हो सकता है: एक इंटीजरफिल्ड दोनों रूपों और डीबी पर निरर्थक होने के लिए यह आवश्यक है कि दोनों शून्य = सही और खाली = सही हों। देखें: https://code.djangoproject.com/wiki/NewbieMistakes#IntegerNULLS – fjsj
मुझे लगता है कि इसे Django समुदाय द्वारा संबोधित किया जाना चाहिए क्योंकि यह बहुत भ्रमित है। "गैर-स्ट्रिंग फ़ील्ड जैसे पूर्णांक के लिए केवल null = True का उपयोग करें" Django इसे उसी तरीके से संभाल सकता है जैसे यह auto_now और auto_now_add को संभालता है। "विकल्प auto_now, auto_now_add, और डिफ़ॉल्ट पारस्परिक रूप से अनन्य हैं। इनमें से केवल एक विकल्प मौजूद हो सकता है।" – Gregory
@ ग्रेगरी: जैसा समझाया गया है, 'शून्य' डेटाबेस भंडारण के बारे में है। Django SQL डेटाबेस के उपयोगी लेकिन तुलनात्मक रूप से खतरनाक पहलू को उजागर कर रहा है। यह वास्तव में ऐसा कुछ है जिसे कोड में सीमित या लागू करने के बजाय दस्तावेज़ीकरण में समझाया जाना चाहिए- ऐसी कोई सीमा नहीं है जिसे उपयोगी (हालांकि संभावित कोने-केस) कार्यक्षमता को तोड़ने के बिना लागू किया जा सके। –