एक स्ट्रिंग एक पूर्णांक नहीं है; और एक खाली स्ट्रिंग None
नहीं है या NULL
. आपको क्या करना है उन उदाहरणों को पकड़ना है जहां फ़ील्ड खाली है और फिर उसे None
. पर डालें ।
foo = "something" # "something" is coming from your CSV file
try:
val = int(foo)
except ValueError:
# foo is something that cannot be converted to
# a number. It could be an empty string, or a
# string like 'hello'
# provide a default value
val = None
# Now use val to insert into the database
f = MyModel()
f.age = val
f.save()
blank
सख्ती से फ्रंट एंड सत्यापन के लिए है; इसका डेटाबेस पक्ष पर कोई प्रभाव नहीं पड़ता है:
NULL
दूसरी ओर, डेटाबेस के साथ क्या करना है:
एक IntegerField
मान की आवश्यकता होती है जिसे एक पूर्णांक में परिवर्तित किया जा सकता है, इसलिए जब आप रिक्त स्ट्रिंग . में पास करते हैं , यह इसे कास्ट नहीं कर सकता है और एक अपवाद उठाता है। इसके बजाय, यदि आप None
. में पास होते हैं , और आपके पास age = models.IntegerField(null=True)
. है , यह इसे सही ढंग से संग्रहीत करना जानता है।
संक्षेप में:
-
age = models.IntegerField()
फ़ील्ड आवश्यक है और एक मान्य पूर्णांक मान की आवश्यकता है। यह स्वीकार नहीं करेगा
None
और डेटाबेस में कोई शून्य मान नहीं होगा। मान्य मान हैं -2147483648 से 2147483647 -
age = models.IntegerField(null=True)
फ़ील्ड आवश्यक है (फ़ॉर्म सत्यापन)। यदि फ़ील्ड में
None
है एक मान के रूप में, इसका अनुवादNULL
. में किया जाएगा डेटाबेस में। -
age = models.IntegerField(blank=True, null=True)
फ़ील्ड की आवश्यकता नहीं है (फ़ॉर्म सत्यापन)। यदि फ़ील्ड
None
. में पास की गई है , इसका अनुवादNULL
. में किया जाएगा -
age = models.IntegerField(blank=True)
फ़ील्ड की आवश्यकता नहीं है (फॉर्म सत्यापन), लेकिन एक वैध पूर्णांक मान को पारित करने की आवश्यकता है क्योंकि डेटाबेस शून्य को स्वीकार नहीं करता है। आमतौर पर यहां आप इसे
default=0
. के साथ एक डिफ़ॉल्ट मान देंगे या ओआरएम को मान सबमिट करने से पहले कुछ सत्यापन करवाएं।