title: Cannot assign None: "StaffMember.user" does not allow null values
body: <p>Ok so here is the code, I will explain what I try to do at the bottom of the page. I am just starting out with python and django please keep that in mind.</p>
  
  <p>Models.py (there is more in here but its not important):</p>
  
  <pre><code>STAFF_TYPES = (
      ('OG', _('Organizer')),
      ('MO', _('Moderator')),
      ('SC', _('Scanner'))
  )
  
  class StaffMember(models.Model):
      """
          Staff member class
      """
  
      user = models.ForeignKey(User, verbose_name=_('user'))
      staff_type = models.CharField(
          max_length=3,
          choices=STAFF_TYPES,
          verbose_name=_('staff type')
      )
  </code></pre>
  
  <p>forms.py:</p>
  
  <pre><code>class StaffMemberForm(forms.ModelForm):
      user = forms.ModelChoiceField(User.objects.all(), label=_('User'), required=False)
      username = forms.CharField(label=_('Username'), required=False)
      first_name = forms.CharField(label=_('First name'), required=False)
      last_name = forms.CharField(label=_('Last name'), required=False)
      email = forms.EmailField(label=_('Email'), required=False)
  
      def passwordRandom(string_length=10):
          random = str(uuid.uuid4())
          random = random.upper()
          random = random.replace("-", "")
          return random[0:string_length]
  
      class Meta:
          model = StaffMember
          fields = ('staff_type',)
  
      def clean(self):
          if self.errors:
              return self.cleaned_data
  
          super(StaffMemberForm, self).clean()
          cleaned_data = self.cleaned_data
          username = cleaned_data.get("username")
          first_name = cleaned_data.get("first_name")
          last_name = cleaned_data.get("last_name")
          email = cleaned_data.get("email")
          user = cleaned_data.get("user")
          staff_type = cleaned_data.get("staff_type")
          check = [username, user]
          if staff_type:
              if any(check) and not all(check):
                  return cleaned_data
          raise forms.ValidationError(_('Choose a user from the dropdown OR make a new user'))
  
      def save(self, commit=True):
          if self.cleaned_data.get("user") is None:
              User.username = self.cleaned_data['username']
              User.first_name = self.cleaned_data['first_name']
              User.last_name = self.cleaned_data['last_name']
              User.email = self.cleaned_data['email']
              User.password = self.passwordRandom(8)
              StaffMember.user = User
              User.save()
          else:
              StaffMember.user = self.cleaned_data.get("user")
          StaffMember.save()
  </code></pre>
  
  <p>Ok so essentially what I am trying to do here is create the option to either choose an existing user from the dropdown or create one by using the forms, therefore the fields can't be required because they can both be empty (not at the same time though).
  So I want the form to save a new user and use that user to connect to the staffmember when they choose to make a new one. How would I do this because so far I'm only getting an error.</p>
  
  <p>Thanks in advance,
  Aaron</p>
  
  <p>PS. Sorry for the messy code, just starting out as I stated before</p>