2010-12-08 10 views

उत्तर

41
Django model field reference से

प्रत्यक्ष:

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

क्षेत्र के लिए डिफ़ॉल्ट मान। यह एक मूल्य या एक कॉल करने योग्य वस्तु हो सकती है। यदि कॉल करने योग्य है तो हर बार एक नई वस्तु बनाई जाती है।

आप यह सब समझ में नहीं आता है?

+18

मुझे लगता है कि यह हर किसी के लिए स्पष्ट नहीं हो सकता है: एक इंटीजरफिल्ड दोनों रूपों और डीबी पर निरर्थक होने के लिए यह आवश्यक है कि दोनों शून्य = सही और खाली = सही हों। देखें: https://code.djangoproject.com/wiki/NewbieMistakes#IntegerNULLS – fjsj

+0

मुझे लगता है कि इसे Django समुदाय द्वारा संबोधित किया जाना चाहिए क्योंकि यह बहुत भ्रमित है। "गैर-स्ट्रिंग फ़ील्ड जैसे पूर्णांक के लिए केवल null = True का उपयोग करें" Django इसे उसी तरीके से संभाल सकता है जैसे यह auto_now और auto_now_add को संभालता है। "विकल्प auto_now, auto_now_add, और डिफ़ॉल्ट पारस्परिक रूप से अनन्य हैं। इनमें से केवल एक विकल्प मौजूद हो सकता है।" – Gregory

+1

@ ग्रेगरी: जैसा समझाया गया है, 'शून्य' डेटाबेस भंडारण के बारे में है। Django SQL डेटाबेस के उपयोगी लेकिन तुलनात्मक रूप से खतरनाक पहलू को उजागर कर रहा है। यह वास्तव में ऐसा कुछ है जिसे कोड में सीमित या लागू करने के बजाय दस्तावेज़ीकरण में समझाया जाना चाहिए- ऐसी कोई सीमा नहीं है जिसे उपयोगी (हालांकि संभावित कोने-केस) कार्यक्षमता को तोड़ने के बिना लागू किया जा सके। –

11
docs से

:

null यह सच है, तो Django डेटाबेस में शून्य के रूप में खाली मान संग्रहीत होगा। डिफ़ॉल्ट गलत है।

blank यदि सही है, तो क्षेत्र को खाली होने की अनुमति है। डिफ़ॉल्ट गलत है।

default फ़ील्ड के लिए डिफ़ॉल्ट मान।

आप "default" का उपयोग कर सकते मूल्य है कि प्रश्न में क्षेत्र के लिए उपयोग किया जाएगा अपने कोड को स्पष्ट रूप से एक मूल्य के लिए सेट नहीं किया जाना चाहिए निर्धारित करने के लिए।

उपयोग फ़ॉर्म सत्यापन उद्देश्यों के लिए "blank" - खाली = सच क्षेत्र एक खाली मूल्य

उपयोग "null" करने के लिए सेट किया जा करने की अनुमति देगा आप के रूप में "अशक्त" में एक खाली मान संग्रहीत करना चाहते हैं डीबी। हालांकि, इसे किसी खाली स्ट्रिंग में रिक्त मान या 0 को किसी दिए गए फ़ील्ड के लिए उपयुक्त के रूप में सेट करने के लिए पसंद किया जाता है।

-5
Null = None 
Blank = "" 
Default = "" 

शायद जितना हो सके उतने लेमेन के रूप में।

खाली का अर्थ है कि यह शून्य नहीं है और इसके बजाय कुछ डेटा है जो उस डेटाटाइप के लिए "खाली" का प्रतिनिधित्व करता है, जो स्ट्रिंग के मामले में शायद एक खाली स्ट्रिंग है। संख्या के लिए यह 0.

1

हो सकता है कार्यान्वयन के संदर्भ में:

'खाली' फ़ील्ड सभी रूपों से मेल खाती है। निर्दिष्ट करता है कि यह मान फ़ॉर्म में आवश्यक है और संबंधित फॉर्म सत्यापन किया गया है। 'ट्रू' खाली मानों की अनुमति देता है।

'शून्य' फ़ील्ड डीबी स्तर से मेल खाता है। इसे डीबी में न्यूल या नॉट के रूप में सेट किया जाएगा।

इसलिए यदि रिक्त = सत्य के साथ व्यवस्थापक में खाली फ़ील्ड छोड़ दें, तो NULL को डीबी में खिलाया जाता है। अब यह एक त्रुटि फेंक सकता है अगर डीबी में उस विशेष कॉलम को न्यूल के रूप में निर्दिष्ट किया गया है।

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