Reputation: 3118
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
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
Reputation: 73588
if your d
is either None
or ""
then simply check -
if d:
#do something
else:
#do something else
Upvotes: 19
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
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