16

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
  • myString is not a string -- it's a models.CharField. Show us your actual view where you're trying to do this. Commented Aug 9, 2011 at 11:12
  • 1
    so what does print myString or the equivalent show right before that if statement? You need to give us more info. Commented Aug 9, 2011 at 11:46
  • turns out the above does work, but needed to restart apache to get the altered code to execute. Oops. Commented Aug 9, 2011 at 12:02

4 Answers 4

19

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

if d: 
    #do something
else:
    #do something else
Sign up to request clarification or add additional context in comments.

Comments

13

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.

Comments

3

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.

Comments

1

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.