2011-01-05 13 views
41

मुझे अपने Django एप्लिकेशन को एक निश्चित मॉडल फ़ील्ड के लिए पूर्ण सेट का डिफ़ॉल्ट मान रखने की आवश्यकता है। मैंने शून्य, खाली, और डिफ़ॉल्ट पैरामीटर को देखा है, लेकिन यह स्पष्ट नहीं है कि वांछित प्रभाव प्राप्त करने के लिए मुझे तीनों का संयोजन करने की आवश्यकता है। मैंने default=NULL सेटिंग करने का प्रयास किया है, लेकिन यह एक त्रुटि फेंक दिया। अगर मैं blank=True, null=True निर्दिष्ट करता हूं और कोई डिफ़ॉल्ट नहीं है, तो क्या यह सिर्फ रनटाइम पर वापस आ जाएगा?Django मॉडल फ़ील्ड डिफ़ॉल्ट के लिए

उत्तर

67

default=None आज़माएं। पायथन में कोई NULL नहीं है।

+0

यह चाल है, धन्यवाद। :) – SPoage

+2

सिर्फ स्पष्टता के लिए, वह जिस संदर्भ का जिक्र कर रहा है वह Django मॉडल फ़ील्ड के लिए है। यह उस मान के लिए उपयोग किए जाने वाले किसी भी मूल्य को अनुमति/अस्वीकार नहीं करता है, जिसे डेटाबेस में न्यूल के रूप में संग्रहीत किया जाता है, पायथन में नहीं। रिक्त स्थान यह दर्शाता है कि फॉर्म/व्यवस्थापक/आदि में सत्यापन के लिए मान आवश्यक है या नहीं। – Nexion

+0

@Nexion, 'default = none' किसी भी मूल्य का उपयोग करने की अनुमति नहीं देता है या अनुमति नहीं देता है। यह बस Django को बताता है कि फ़ील्ड का मूल्य क्या होना चाहिए यदि यह निर्दिष्ट नहीं है। 'null = True' किसी भी पायथन कोड में उपयोग करने की अनुमति नहीं देता है। इसे डेटाबेस में न्यूल के रूप में माना जाता है। और आप फॉर्म सत्यापन के लिए रिक्त उपयोग के बारे में सही हैं। – Bobort

22

यदि आप मॉडल फ़ील्ड पर शून्य = सही निर्दिष्ट करते हैं तो उपयोगकर्ता डेटाबेस में NULL के रूप में संग्रहीत किया जाएगा यदि उपयोगकर्ता कोई मान प्रदान नहीं करता है।

+2

अधिकांश मामलों में यह सच नहीं है, क्योंकि आमतौर पर यह एक खाली स्ट्रिंग स्टोर करेगा। – hY8vVpf3tyR57Xib

+0

@AlfonsIngomar गलत, दस्तावेज़ों से - https://docs.djangoproject.com/en/1.8/ref/models/fields/#null "यदि सही है, तो Django डेटाबेस में खाली मानों को खाली के रूप में संग्रहीत करेगा। डिफ़ॉल्ट है असत्य।" – Kevin

+4

अगले अनुच्छेद को देखें: स्ट्रिंग-आधारित फ़ील्ड जैसे कि चारफ़िल्ल्ड और टेक्स्टफ़िल्ल्ड ** पर शून्य का उपयोग करने से बचें क्योंकि खाली स्ट्रिंग मान हमेशा खाली तारों के रूप में संग्रहीत किए जाएंगे, न कि पूर्ण ** के रूप में। यदि एक स्ट्रिंग-आधारित फ़ील्ड में शून्य = सही है, तो इसका अर्थ है कि इसमें "कोई डेटा नहीं" के लिए दो संभावित मान हैं: NULL, और खाली स्ट्रिंग। ज्यादातर मामलों में, "डेटा नहीं" के लिए दो संभावित मान होने के लिए अनावश्यक है, Django सम्मेलन खाली स्ट्रिंग का उपयोग करना है, न कि पूर्ण। – hY8vVpf3tyR57Xib

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