title: Django users created through proxy can't login
body: <p>I created a model inheriting from <strong>django.contrib.auth.models.User</strong>, and extended it with more fields, and then created a proxy that overrides <strong>save()</strong> method to hash the password, but users created through this proxy can't login. I traced the process and found that <code>user.check_password()</code> always fails, but I don't know the reason.</p>
  
  <p>This is my model and its proxy:</p>
  
  <pre><code>class UserExtended(User):
      albums = models.ManyToManyField(Album, null=True, blank=True, verbose_name='Albums')
  
      class Meta:
          verbose_name = _("User")
          verbose_name_plural = _("Users")
  
      def __str__(self):
          return "[{}] {} ({})({}{})".format(self.id, self.email, self.username, self.first_name, self.last_name)
  
  class UserExtendedProxy(UserExtended):
      class Meta:
          proxy = True
  
      def save(self, *args, **kwargs):
          if not self.id:
              try:
                  user = User.objects.get(email=self.email)
              except:
                  pass
              else:
                  raise Exception('eMail already in use.')
  
          self.set_password(self.password)
          super(UserExtendedProxy, self).save(*args, **kwargs)
          Token.objects.create(user=self)
  </code></pre>
  
  <p>And this is my <strong>ModelBackend</strong>:</p>
  
  <pre><code>class EmailBackend(ModelBackend):
      def authenticate(self, request, username=None, password=None, **kwars):
          UserModel = get_user_model()
          try:
              user = UserModel.objects.get(email=username)
          except UserModel.DoesNotExist:
              return None
          else:
              if user.check_password(password):
                  return user
  
          return None
  </code></pre>
  
  <p>I can see in my database that users created through this proxy actually exist in <strong>django.contrib.auth.models.User</strong> model, so I can't figure out why they can't log in.</p>
  
  <p>Another issue is that superuser created through <code>python manage.py createsuperuser</code> doesn't exist for <strong>UserExtendedProxy</strong>.</p>