title: Django set_password() method in UserManager is saving plain text
body: <p>I'm trying to make an endpoint for registration.
  When I create a new user, a plain text would be saved in the password field. But, when I add a user through admin, it would be hashed. I'm not sure what I'm missing here.</p>
  
  <p>model.py</p>
  
  <pre><code>class UserManager(BaseUserManager):
  def _create_user(self, email, password=None, **extra_fields):
      if not email:
          raise ValueError('The given email must be set')
  
      user = self.model(
          email=self.normalize_email(email),
          **extra_fields,
      )
      user.set_password(password)
      user.save(using=self._db)
      return user
  
  def create_user(self, email, password=None, **extra_fields):
      extra_fields.setdefault('is_superuser', False)
      return self._create_user(email, password, **extra_fields)
  
  def create_superuser(self, email, password, **extra_fields):
      extra_fields.setdefault('is_staff', True)
      extra_fields.setdefault('is_admin', True)
      extra_fields.setdefault('is_superuser', True)
  
      if extra_fields.get('is_superuser') is not True:
          raise ValueError('Superuser must have is_superuser=True.')
  
      return self._create_user(email, password, **extra_fields)
  </code></pre>
  
  <p>serializers.py</p>
  
  <pre><code>from rest_framework import serializers
  from django.contrib.auth import authenticate
  from .models import User
  class RegisterSerializer(serializers.ModelSerializer):
  class Meta:
      model = User
      fields = ('email', 'password')
      extra_kwargs = {'password': {'write_only': True}}
  
      def create(self, validated_data):
          user = User.objects.create_user(
              validated_data['email'],
              validated_data['password']
          )
          return user
  </code></pre>
  
  <p>view.py</p>
  
  <pre><code>class RegisterAPI(generics.GenericAPIView):
  serializer_class = RegisterSerializer
  
  def post(self, request, *args, **kwargs):
      serializer = self.get_serializer(data=request.data)
      serializer.is_valid(raise_exception=True)
      user = serializer.save()
      return Response({
          "user": UserSerializer(user, context=self.get_serializer_context()).data,
      })
  </code></pre>