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

Jawaban:


195

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

subject = models.ForeignKey(subjects, blank=True, null=True)

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.