title: Userena - Extending the Profile model further upto two different models
body: <p>What i am trying to achieve is that i want to extend the profile model further to either teacher or student. In the signup form I added a choice field where user select whether he is teacher or student. Below is my model structure.</p>
  
  <pre><code>class Profile(UserenaLanguageBaseProfile):        
       """ Default profile """
       GENDER_CHOICES = (
               (1, _('Male')),
               (2, _('Female')),
           )
  
       user = models.OneToOneField(User,
                                  unique=True,
                                  verbose_name=_('user'),
                                  related_name='profile')
  
      gender = models.PositiveSmallIntegerField(_('gender'),
                                                choices=GENDER_CHOICES,
                                                blank=True,
                                                null=True)
  
  class Teacher(Profile):
      profile = models.OneToOneField(Profile,
                                  unique=True,
                                  verbose_name=_('profile'),
                                  related_name='teacher')
  
      home_address =  models.CharField(_('home_address'), max_length=255, blank=True)
      home_phone =  models.CharField(_('home_phone'), max_length=30, blank=True)
      cell_phone =  models.CharField(_('cell_phone'), max_length=30, blank=True)
      experience =  models.IntegerField(default = 0)
      summary =  models.TextField(_('summary'), max_length=500, blank=True)
  
  class Student(Profile):
      profile = models.OneToOneField(Profile,
                                  unique=True,
                                  verbose_name=_('profile'),
                                  related_name='student')
  
      grade = models.CharField(_('grade'), max_length=50, blank=True)
  </code></pre>
  
  <p>I am overriding the signup save method as:</p>
  
  <pre><code>def save(self):
          new_user = super(SignupFormExtra, self).save()
          new_user.first_name = self.cleaned_data['first_name']
          new_user.last_name = self.cleaned_data['last_name']
          new_user.save()
  
          if self.cleaned_data['teacher_or_student'] == 'teacher':
              teacher = Teacher(profile = new_user.get_profile())
              teacher.save()
          elif self.cleaned_data['teacher_or_student'] == 'student':
              student = Student(profile = new_user.get_profile())
              student.save()
          return new_user
  </code></pre>
  
  <p>When teacher.save() or student.save() method is called it raises an integrity error that "(1048, "Column 'user_id' cannot be null")" but i am not creating a new user instance here i am trying to assign the newly created profile_id to teacher or student model. I am doing in the wrong way?? what should I do?</p>