2011-08-09 60 views
5

空/空字符串我有以下內容的charfield:測試在Django

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

在我的許多物體,這個特殊的字符串經常被留爲空白,通過Django管理界面創建時。在MySQL中,列是VARCHAR(50),默認值爲NULL。

無論測試,我嘗試在我的views.py檢測空白值做,似乎總是以評估爲假的條目是不是空白的:

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

我怎麼能空白,不區分這個字段的空白值?

感謝

編輯:

實際的觀點是下面,我想執行塊僅當此字段不爲空。

if myObject.myString: 
    #do something 

塊總是執行,並且我試圖測試的所有上述實施例中爲一個空白字段。

編輯2:

從頭開始,if myObject.myString:確實工作。

+0

'myString'不是字符串 - 它是'models.CharField'。向我們展示您的實際視圖,您嘗試執行此操作的位置。 – agf

+0

編輯視圖代碼 – meepmeep

+1

那麼'print myString'或等效顯示在if語句之前有什麼作用?你需要給我們更多的信息。 – agf

回答

6

如果您d或者是None""然後簡單地檢查 -

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

myString不是字符串 - 這是一個models.CharField。向我們展示您的實際視圖,您嘗試執行此操作的位置。

如果你已經得到了你的模型的實例,你就應該能夠做到

if model_instance.myString: 

測試,如果它不是空白。

8

某些空字段返回空字符串,而其他空字符串返回None。但是,一個可爲空的布爾字段在設置後會返回False。這不會在斯里卡爾的回答中通過測試。更強大的解決方案是這樣的:

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