在Django中测试空字符串/null字符串
我有一个字符字段,内容如下:
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:
确实有效。
4 个回答
3
myString
其实不是一个字符串,它是一个 models.CharField
。请给我们看看你实际的视图代码,看看你是怎么尝试做这件事的。
如果你已经有了模型的一个实例,你应该可以直接这样做
if model_instance.myString:
来检查它是否不为空。
13
有些空字段返回的是空字符串,而有些则返回的是None
。不过,一个可以为空的布尔字段如果被设置了,会返回False
。这样的话,就不能通过Srikar的答案中的测试了。一个更可靠的解决方案是:
if d in [None, '']:
# This field is empty.
19
如果你的 d
是 None
(表示没有值)或者是空字符串 ""
,那么只需要检查一下 -
if d:
#do something
else:
#do something else