En este articulo explico las diferencias entre default, null y blank en Django.
Los tipos de campo que emplea Django puedes revisarlos en la explicación de los campos en los modelos en su pagina oficial.
Nul
El campo nulo (Null) cuando posee valor TRUE, permitirá guardar valores vacíos como NULL en la base de datos. Su valor por defecto es False.
Dicho esto, las cadenas vacías siempre se guardarán como cadenas vacías, no como NULL.
Por tanto, lo adecuado es usarlo para campos que no sean cadenas (fechas, enteros, o booleanos.
Blank
El campo blank cuando es TRUE, puede dejarse en blanco y por defecto su valor es False.
Blank se diferencia de Null, porque Blank se emplea en validaciones, mientras Null se emplea en la base de datos.
Si un campo blank es True
, la validación en el sitio de Django permitirá que se añada un campo vacío, sino es asi por el contrario, y blank=False
, el campo será requerido.
Por tanto, considerando lo explicado anteriormente al hablar de Null, si tenemos datos del tipo booleano, date o entero, y lo hemos declarado null, es entonces obligatorio también definirlos como blank=True
.
Ya que esto permitirá si valores vacíos en los formularios
Default
El valor por defecto (default) de un campo, ha de ser llamable y por tanto si es llamable, se llamará cada vez que un objeto nuevo sea creado.
Resumiendo el concepto del uso de estos seria:
- Usa «default» para definir el valor que se dará a un campo si tu código no lo define.
- Usa «blank» para validaciones de formulario.
blank=True
permite que el campo se deje en blanco. - Usa «null» si quieres guardar valores vacíos como NULL en la base de datos.
Espero humildemente, que esto sirva de ayuda a alguien.
«El elefante no necesita decir cuan alto es, le basta con caminar»
NS