Sebuah string bukan bilangan bulat; dan string kosong bukan None atau NULL . Yang perlu Anda lakukan adalah menangkap contoh-contoh di mana bidang kosong dan kemudian melemparkannya ke 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
hanya untuk validasi front end; itu tidak berdampak pada sisi database:
null
di sisi lain, ada hubungannya dengan database:
Sebuah IntegerField membutuhkan nilai yang dapat diubah menjadi bilangan bulat, jadi ketika Anda memasukkan string kosong , itu tidak bisa melemparkannya dan memunculkan pengecualian. Sebaliknya, jika Anda memasukkan None , dan Anda memiliki age = models.IntegerField(null=True) , ia tahu untuk menyimpannya dengan benar.
Untuk meringkas:
-
age = models.IntegerField()Bidang wajib diisi dan membutuhkan nilai bilangan bulat yang valid. Itu tidak akan menerima
Nonedan tidak akan memiliki nilai nol dalam database. Nilai yang valid adalah -2147483648 hingga 2147483647 -
age = models.IntegerField(null=True)Bidang wajib diisi (validasi formulir). Jika bidang memiliki
Nonesebagai nilai, itu akan diterjemahkan keNULLdalam basis data. -
age = models.IntegerField(blank=True, null=True)Bidang tidak wajib diisi (validasi formulir). Jika bidang dilewatkan dalam
None, itu akan diterjemahkan keNULL -
age = models.IntegerField(blank=True)Bidang tidak diperlukan (validasi formulir), tetapi nilai integer yang valid harus diteruskan karena database tidak menerima nol. Biasanya di sini Anda akan memberikan nilai default dengan
default=0atau lakukan validasi sebelum mengirimkan nilai ke orm.