title: Blank, Null, and Required in Django Models and ModelForms
body: <p>So far I haven't come across a clear explanation on blank, null, and required - in Django's models and forms.</p>
  
  <hr>
  
  <p><em>I know the default for each is the following:</em></p>
  
  <pre><code>blank = False
  null = False
  required = True
  </code></pre>
  
  <p><em>I also know that:</em></p>
  
  <p><code>blank=True</code>  (used in models.py), means on the form level, accept empty forms - the associated field is not required in a form.</p>
  
  <p><code>null=True</code>  (used in models.py),  means on the database level that Python <code>None</code> values can be stored in the model and be saved (and then end up as SQL <code>NULL</code> values in the database).</p>
  
  <p><code>required=False</code>  (used in forms.py), means the associated form field is not required.</p>
  
  <hr>
  
  <p>Hopefully the above information will serve others well (please let me know if there are any flaws in the logic, and I will update it). </p>
  
  <p>My question is the following:</p>
  
  <p>When do I know when to use <code>blank=True</code> vs. <code>required=False</code>. If my goal is to make a form field not required, I could define this in the model using <code>blank=True</code>, or I could define this in the form using <code>required=False</code>. Does this mean you can define <code>blank=True</code> in a model, and in the associated <code>ModelForm</code> override this with <code>required=True</code>?</p>
  
  <p>Also related, what about when you are using a regular form (<code>forms.Form</code>)? Since the form is not associated with a model (other than through view logic), what happens if again, they contradict each other?</p>