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
None
dan 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
None
sebagai nilai, itu akan diterjemahkan keNULL
dalam 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=0
atau lakukan validasi sebelum mengirimkan nilai ke orm.