2011-01-05 17 views
41

Necesito que mi aplicación Django me permita tener un valor predeterminado de NULL establecido para un determinado campo de modelo. He revisado nulo, , y parámetros predeterminados, pero no está muy claro qué combinación de los tres necesito para obtener el efecto deseado. Intenté configurar default=NULL, pero arrojó un error. Si especifico blank=True, null=True y no aparece el valor predeterminado, ¿volverá a funcionar de forma predeterminada el tiempo de ejecución de NULL come runtime?Django Model Field Default to Null

Respuesta

67

Probar default=None. No hay NULL en python.

+0

Eso hizo el truco, gracias. :) – SPoage

+2

Solo por claridad, el NULL al que se refiere es para el campo de modelo de Django. Esto permite/no permite utilizar un valor None para ese valor, que se almacena como NULL en la base de datos, no en Python. El espacio en blanco se refiere a si se requiere o no el valor para la validación en forms/admin/etc. – Nexion

+0

@Nexion, 'default = None' no permite o no permite el uso de un valor Ninguno. Simplemente le dice a Django cuál debería ser el valor del campo si no se especifica. 'null = True' no permite que se use None en el código de Python. Se trata como NULL en la base de datos. Y tiene razón sobre el uso de espacios en blanco para la validación de formularios. – Bobort

22

Si especifica null = True en el campo del modelo, el valor se almacenará como NULL en la base de datos si el usuario no proporciona un valor.

+2

Eso no es cierto en la mayoría de los casos, porque generalmente almacenará una cadena vacía. – hY8vVpf3tyR57Xib

+0

@AlfonsIngomar Incorrecto, de los documentos - https://docs.djangoproject.com/en/1.8/ref/models/fields/#null "Si es verdadero, Django almacenará los valores vacíos como NULL en la base de datos. Falso." – Kevin

+4

Mire el siguiente párrafo: evite usar nulo en campos basados ​​en cadenas como CharField y TextField ** porque los valores de cadenas vacías siempre se almacenarán como cadenas vacías, no como NULL **. Si un campo basado en cadena tiene null = True, eso significa que tiene dos valores posibles para "sin datos": NULL y la cadena vacía. En la mayoría de los casos, es redundante tener dos valores posibles para "sin datos"; la convención de Django es usar la cadena vacía, no NULO. – hY8vVpf3tyR57Xib

Cuestiones relacionadas