title: Confused about how to make Django model field optional
body: <p>I have an 'address' field in my Django model that I want to be optional:</p>
  
  <pre><code>class Home(models.Model):
      address = models.CharField(max_length=256, blank=True, default=None)
      city = models.CharField(max_length=25)
  </code></pre>
  
  <p>I want this to be an optional field in my database but I didn't set "null=True" because the <a href="https://docs.djangoproject.com/en/dev/ref/models/fields/#null" rel="nofollow noreferrer">documentation</a> says</p>
  
  <p>"Avoid using null on string-based fields such as CharField and TextField because empty string values will always be stored as empty strings, not as NULL. If a string-based field has null=True, that means it has two possible values for “no data”: NULL, and the empty string. In most cases, it’s redundant to have two possible values for “no data;” the Django convention is to use the empty string, not NULL."</p>
  
  <p>However, when I create a Home object with this command:</p>
  
  <pre><code>Home.objects.create(city='Chicago')
  </code></pre>
  
  <p>I get an error:</p>
  
  <pre><code>IntegrityError: null value in column 'address' violates not-null constraint.
  </code></pre>
  
  <p>Shouldn't I add "null=True" to the address field despite what the docs say in order to make it optional?  If not, how should it be declared so that I can create new Home objects without raising this error?</p>