testing for empty/null string in django

2019-04-28 07:52发布

I have a charfield with the following:

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

In many of my objects, this particular string is often left blank, when created through the django admin interface. In MySQL, the column is VARCHAR(50) with default=NULL.

Whatever test I try to do in my views.py to detect blank values, always seems to evaluate to false whether the entry is blank or not:

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

How can I discriminate between blank and non-blank values for this field?

Thanks

EDIT:

Actual view is the following, I want to execute a block only if this field is not blank.

if myObject.myString:
     #do something

the block always executes, and I have tried all the above examples of testing for a blank field.

EDIT 2:

Scratch that, if myObject.myString: does indeed work.

3条回答
迷人小祖宗
2楼-- · 2019-04-28 08:32

Some empty fields return empty strings while others return None. A nullable boolean field however, will return False when it has been set. This will not pass the test in Srikar's answer. A more robust solution is this:

if d in [None, '']:
    # This field is empty.
查看更多
够拽才男人
3楼-- · 2019-04-28 08:39

if your d is either None or "" then simply check -

if d: 
    #do something
else:
    #do something else
查看更多
虎瘦雄心在
4楼-- · 2019-04-28 08:47

myString is not a string -- it's a models.CharField. Show us your actual view where you're trying to do this.

If you've already got an instance of your model, you should just be able to do

if model_instance.myString:

to test if it's not blank.

查看更多
登录 后发表回答