Posso rendere facoltativo il campo della chiave esterna nel modello Django


110

Ho questo codice

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

Non è sempre possibile che io abbia tre valori di libri. quindi a volte se non conosco l'argomento, il luogo o l'editore. Quindi voglio tenerli vuoti

Ma se ce l'ho, ho bisogno della casella di selezione per selezionare. è possibile così

Risposte:


195

Certo, aggiungi semplicemente blank=True, null=Trueper ogni campo che vuoi che rimanga opzionale

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

6
Sono necessari entrambi? Quali sarebbero gli svantaggi di usare solo null = True?
Ward

12
@WardC La combinazione dei due è così frequente perché in genere se permetti a un campo di essere vuoto nel modulo, avrai anche bisogno del tuo database per consentire valori NULL per quel campo. L'eccezione è CharFields e TextFields, che in Django non vengono mai salvati come NULL. I valori vuoti vengono memorizzati nel DB come una stringa vuota ('').
fang_dejavu

8
@ Ward, entrambi non sono necessari. È sufficiente usare solo null=True.
Jam Risser

8
blank=Trueè importante per la convalida del modulo. Consentirà una stringa vuota come input dell'utente in questo campo. null=Trueconsentirà il valore NULL nella colonna del database.
cezar

1
Il commento di @cezar mi ha salvato la vita! Grazie
po5i
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.