title: Trying to extend AbstractUser to create multiple user types in Django
body: <p>So I have been searching all around the internet for a full example of how to user AbstractUser when u have at least 2 different models. Didn't find anything conclusive.. at least that would work on latest version of Django (2.0.1). 
  I have 2 models, teacher and student, and registration needs to be different. Besides username, email, name and surname, I need for example, for the student, to upload a profile picture, email, phone, student_ID. And for teacher, bio, academic title and website.  Did I start good ? What is the right approach ?
  <div class="snippet" data-lang="js" data-hide="false" data-console="true" data-babel="false">
  <div class="snippet-code">
  <pre class="snippet-code-html lang-html prettyprint-override"><code>class Profile(AbstractUser):
      photo = models.ImageField(upload_to='students_images')
      email = models.EmailField()
      phone = models.CharField(max_length=15, )
  
  
  class Student(Profile):
      student_ID = models.CharField(unique=True, max_length=14,
                                    validators=[RegexValidator(regex='^.{14}$',
                                                               message='The ID needs to be 14 characters long.')])
  
      def __str__(self):
          return self.name
  
  
  class Teacher(Profile):
      academic_title = models.CharField(max_length=30)
      bio = models.TextField()
      website = models.URLField(help_text="E.g.: https://www.example.com", blank=True)</code></pre>
  </div>
  </div>
  </p>