title: PlayerForm.is_valid always false but player is still saving
body: <p>I designed a leaderboard app where there are players and games.</p>
  
  <p>When you register, it creates a Django user and creates a <code>Player</code> object that is associated with the user. When I register, if <code>PlayerForm.is_valid</code> is <code>True</code>, the user and player is created where <code>PlayerForm(UserCreationForm)</code> and it renders a the <code>elosearch.html</code>, otherwise, it returns to the <code>register.html</code>.</p>
  
  <p>I can see that the player and user is being created but when I submit the request it is rendering <code>register.html</code> rather than <code>elosearch.html</code>. How is it rendering the wrong view if <code>is_valid</code> produces <code>True</code> and if it doesn't, why are the player and user saving? I created my own html form so I don't actually need to pass the form to the template (args is not used)</p>
  
  <p>PlayerForm</p>
  
  <pre><code>class PlayerForm(UserCreationForm):
      username = forms.CharField(required=True)
      email = forms.EmailField(required=True)
  
      class Meta:
          model = User
          fields = (
              'username',
              'email',
              'password1',
              'password2',
          )
  
      def save(self, commit=True):
          user = super(PlayerForm, self).save(commit=False)
          user.username = self.cleaned_data['username']
          user.email = self.cleaned_data['email']
          user.password1 = self.cleaned_data['password1']
          user.password2 = self.cleaned_data['password2']
          new_player = Player(name=str(user.username), user=user)
  
          if commit:
              user.save()
              new_player.save()
  
          return user
  </code></pre>
  
  <p>Register View</p>
  
  <pre><code>def register(request):
      if request.method == 'POST':
          form = PlayerForm(request.POST)
          if form.is_valid():
              form.save()
              return render(request, 'elousers/elosearch.html')
          else:
              return render(request, 'elousers/register.html')
      else:
          form = PlayerForm()
          args = {'form': form}
          return render(request, 'elousers/register.html', args)
  </code></pre>
  
  <p>I can see that the player and user is being created but when I submit the request it is rendering <code>register.html</code> rather than <code>elosearch.html</code>.</p>