2011-08-09 59 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.