title: Django: migration to NullBooleanField fails with IntegrityError "contains null values"
body: <p>I'm working in Django 1.7 and trying to migrate a database field called <code>is_dispensing</code> from an existing <code>BooleanField</code> to a <code>NullBooleanField</code>.</p>
  
  <p>My migration file:</p>
  
  <pre><code># -*- coding: utf-8 -*-
  from __future__ import unicode_literals
  
  from django.db import models, migrations
  
  class Migration(migrations.Migration):
  
      dependencies = [
          ('frontend', '0007_practice_is_dispensing'),
      ]
  
      operations = [
          migrations.AlterField(
              model_name='practice',
              name='is_dispensing',
              field=models.NullBooleanField(),
              preserve_default=True,
          ),
      ]
  </code></pre>
  
  <p>Running <code>manage.py migrate</code> fails with this error:</p>
  
  <pre><code>django.db.utils.IntegrityError: column "is_dispensing" contains null values
  </code></pre>
  
  <p>The field in my models file:</p>
  
  <pre><code>is_dispensing = models.NullBooleanField(blank=True)
  </code></pre>
  
  <p>Previously it was:</p>
  
  <pre><code>is_dispensing = models.BooleanField(null=True, blank=True) 
  </code></pre>
  
  <p>and when I added it, I was asked to provide a default value, which I set as None.</p>
  
  <p>I find this message confusing - I'm trying to migrate the column type to <code>NullBooleanField</code>, so why can't it contain null values? That's the whole point of this column type, isn't it? :)</p>
  
  <p>UPDATE: Another thing that's confusing: if I go into Postgres and look at the table that's supposed to have the column, it doesn't actually have an <code>is_dispensing</code> column at all. </p>