title: Django is putting empty string by default while expecting it to be null in DB column
body: <p>I am using <code>postgresql</code> version 10.6 with my <code>Django</code> 2.1 application. The problem is that when I am using <code>null=True</code> in my model field it is translating to <strong>empty string ('')</strong> in database column as default where I am trying default it as <code>null</code>.</p>
  
  <p>In my following code sample <code>image</code> column should be <code>null</code>:</p>
  
  <pre><code>class Profile(models.Model):
      user = models.OneToOneField(User, on_delete=models.CASCADE)
      image = models.ImageField(upload_to='profile_pics', null=True, blank=True) 
  </code></pre>
  
  <p>And I am calling this class from a <code>signal</code> like this:</p>
  
  <pre><code>@receiver(post_save, sender=User)
  def create_profile(sender, **kwargs):
      if kwargs.get('created') is True:
          Profile.objects.create(user=kwargs.get('instance'))
  </code></pre>
  
  <p>In this snapshot you can see that <code>image</code> column is inserting as empty string instead of <code>null</code></p>
  
  <p><a href="https://i.stack.imgur.com/JVDLr.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/JVDLr.png" alt="enter image description here"></a></p>
  
  <p>I have also tried to use default value for my model field as:</p>
  
  <pre><code>image = models.ImageField(default=None, upload_to='profile_pics', null=True, blank=True)
  </code></pre>
  
  <p>but it doesn't work either.</p>