Blank and Default arguments are not interchangeable.  The resulting interaction will be different, depending on what combination you use.  For example,
some_field = models.CharField(default='', max_length=20)
...will not allow you to save the model instance without entering data into some_field.  The default empty string in this case is just allowing you to add that field to the model upon migration, since you aren't also allowing null with null=True.
some_field = models.CharField(blank=True, default='', max_length=20)
...will save without data, since blank=True.
Another way of putting this is that your default='' is allowing the non-nullable field to exist, and blank=True is allowing your non-nullable field to save() without data entry.  If you try to migrate the following:
some_field = models.CharField(max_length=20)
...you'll get the following error:
You are trying to add a non-nullable field 'some_string' to YourModelName without a default; we can't do that (the database needs something to populate existing rows).
Please select a fix:
 1) Provide a one-off default now (will be set on all existing rows with a null value for this column)
 2) Quit, and let me add a default in models.py
Select an option: 
...since a non-nullable field without a default can't exist on the database, but a blank=True field can.  Note, I'm speaking here of PostgeSQL.  This may or may not apply to any/every other DB out there.