Dapatkah saya membuat bidang kunci asing opsional dalam model Django

110

Saya memiliki kode ini

subject      = models.ForeignKey(subjects)
location     = models.ForeignKey(location)
publisher    =  models.ForeignKey(publisher)

Di sana tidak selalu mungkin saya memiliki tiga nilai buku. jadi terkadang jika saya tidak tahu subjek atau lokasi, atau penerbit. Lalu saya ingin mengosongkannya

Tetapi jika saya punya maka saya perlu kotak pilih untuk memilih. apakah mungkin seperti itu

pengguna1
sumber

Jawaban:

195

Tentu, tambahkan saja blank=True, null=Trueuntuk setiap bidang yang Anda ingin tetap opsional

subject = models.ForeignKey(subjects, blank=True, null=True)
Abid A
sumber
6
Apakah keduanya dibutuhkan? Apa kerugian dari hanya menggunakan null = True?
Lingkungan
12
@WardC Kombo keduanya sangat sering karena biasanya jika Anda akan mengizinkan bidang menjadi kosong dalam formulir Anda, Anda juga akan memerlukan database Anda untuk memungkinkan nilai NULL untuk bidang itu. Pengecualiannya adalah CharFields dan TextFields, yang di Django tidak pernah disimpan sebagai NULL. Nilai kosong disimpan di DB sebagai string kosong ('').
fang_dejavu
8
@ Ward, keduanya tidak dibutuhkan. Cukup gunakan saja null=True.
Jam Risser
8
blank=Truepenting untuk validasi formulir. Ini akan memungkinkan string kosong sebagai input pengguna di bidang ini. null=Trueakan memungkinkan nilai NULL di kolom database.
cezar
1
Komentar @cezar menyelamatkan hidup saya! Terima kasih
po5i