2011-08-09 17 views
5

Tengo una Charfield con lo siguiente:pruebas de cadena vacía/nulo en Django

myString = models.CharField(max_length=50,null=True,blank=True) 

En muchas de mis objetos, esta cadena en particular a menudo se deja en blanco, cuando se crean a través de la interfaz de administración de Django. En MySQL, la columna es VARCHAR (50) con default = NULL.

Lo que prueba que intento hacer en mi views.py para detectar valores en blanco, siempre parece como resultado false si la entrada está en blanco o no:

myString is None 
myString=="" 
len(myString)==0 

Cómo puede discriminar entre lo blanco y la no valores en blanco para este campo?

Gracias

EDIT:

vista real es el siguiente, quiero ejecutar un bloque sólo si este campo no está en blanco.

if myObject.myString: 
    #do something 

el bloque siempre se ejecuta, y he intentado todos los ejemplos anteriores de prueba para un campo en blanco.

EDIT 2:

arañazos que, if myObject.myString: en realidad funciona.

+0

'myString' no es una cadena, es un' models.CharField'. Muéstranos tu vista real donde intentas hacer esto. – agf

+0

editado con código de vista – meepmeep

+1

, entonces, ¿qué muestra 'print myString' o su equivalente justo antes de esa declaración' if'? Necesitas darnos más información. – agf

Respuesta

6

si su d es o bien None o "" entonces simplemente comprobar -

if d: 
    #do something 
else: 
    #do something else 
3

myString no es una cadena - es un models.CharField. Muéstranos tu vista real donde intentas hacer esto.

Si ya tiene una instancia de su modelo, que sólo debe ser capaz de hacer

if model_instance.myString: 

para poner a prueba si no está en blanco.

8

Algunos campos vacíos devuelven cadenas vacías mientras que otros devuelven None. Sin embargo, un campo booleano anulable devolverá False cuando se haya establecido. Esto no pasará la prueba en la respuesta de Srikar. Una solución más robusta es esta:

if d in [None, '']: 
    # This field is empty. 
Cuestiones relacionadas