meepmeep
meepmeep

Reputation: 3118

testing for empty/null string in django

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.

Upvotes: 16

Views: 32446

Answers (4)

thisshri
thisshri

Reputation: 642

In the case where your variable is either None or '' (blank), you can just handle both of the conditions as follows

if my_string:
  # neither None nor blank

Upvotes: 1

Srikar Appalaraju
Srikar Appalaraju

Reputation: 73588

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

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

Upvotes: 19

Heston Liebowitz
Heston Liebowitz

Reputation: 1685

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.

Upvotes: 13

agf
agf

Reputation: 176730

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.

Upvotes: 3

Related Questions