2011-08-09 15 views
5

Mam Charfield z następujących czynności:testowanie pustej/łańcuch pusty w Django

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

W wielu moich przedmiotów, ten konkretny ciąg jest często puste, gdy stworzony przez interfejs Django administratora. W MySQL kolumna to VARCHAR (50) z domyślną = NULL.

Cokolwiek Test staram się zrobić w moim views.py wykrycia puste wartości, zawsze wydaje się oceniać na false, czy wejście jest puste lub nie:

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

Jak mogę dyskryminować puste i nie- puste wartości dla tego pola?

Dzięki

EDIT:

rzeczywisty widok jest następujący, chcę wykonać blok tylko jeśli to pole nie jest puste.

if myObject.myString: 
    #do something 

blok zawsze wykonuje i wypróbowałem wszystkie powyższe przykłady testowania pustego pola.

EDIT 2:

Scratch, że if myObject.myString: rzeczywiście działa.

+0

'myString' nie jest ciągiem - jest to' models.CharField'. Pokaż nam swój aktualny widok tam, gdzie próbujesz to zrobić. – agf

+0

edytowany z kodem widoku – meepmeep

+1

, więc co robi 'print myString' lub jego odpowiednik przed wydaniem' if'? Musisz podać nam więcej informacji. – agf

Odpowiedz

6

jeśli d jest albo None lub "" po prostu sprawdzić -

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

myString nie jest ciągiem - to models.CharField. Pokaż nam swój aktualny widok tam, gdzie próbujesz to zrobić.

Jeśli masz już wystąpienie modelu, należy po prostu być w stanie zrobić

if model_instance.myString: 

aby sprawdzić, czy to nie jest puste.

8

Niektóre puste pola zwracają puste ciągi, a inne zwracają None. Niniowalne pole boolowskie zwróci jednak False po ustawieniu. To nie przejdzie testu w odpowiedzi Srikara. Bardziej niezawodne rozwiązanie to:

if d in [None, '']: 
    # This field is empty. 
Powiązane problemy