¿Puedo hacer que el campo de clave externa sea opcional en el modelo Django?

110

Tengo este codigo

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

Allí no siempre es posible que yo tenga tres valores de libros. así que a veces si no conozco el tema o la ubicación, o el editor. Entonces quiero mantenerlos vacíos

Pero si lo tengo, entonces necesito seleccionar el cuadro para seleccionar. ¿Es posible así?

usuario1
fuente

Respuestas:

195

Claro, solo agregue blank=True, null=Truepara cada campo que desee que siga siendo opcional, como

subject = models.ForeignKey(subjects, blank=True, null=True)
Abid A
fuente
6
¿Ambos son necesarios? ¿Cuáles serían las desventajas de usar nulo = Verdadero?
Ward
12
@WardC El combo de los dos es muy frecuente porque normalmente si va a permitir que un campo esté en blanco en su formulario, también necesitará que su base de datos permita valores NULL para ese campo. La excepción son CharFields y TextFields, que en Django nunca se guardan como NULL. Los valores en blanco se almacenan en la base de datos como una cadena vacía ('').
fang_dejavu
8
@ Ward, ambos no son necesarios. Basta con usar null=True.
Jam Risser
8
blank=Truees importante para la validación del formulario. Permitirá una cadena vacía como entrada de usuario en este campo. null=Truepermitirá un valor NULL en la columna de la base de datos.
cezar
1
¡El comentario de @cezar me salvó la vida! Gracias
po5i