title: Django Admin: Email Id Autofill and Related_name= Issue
body: <p>This is the code that I have in my models.py. I'm trying to develop a small website using only the Django Admin.</p>
  
  <pre><code>from django.db import models
  
  # Create your models here.
  from django.contrib.auth.models import User
  from django.db import models
  from django.core.mail import EmailMessage
  
  # Create your models here.
  
  class Project(models.Model):
     STATUS_CHOICE = (
         ('Project Manager', 'Project Manager'),
         ('Technician', 'Technician'),
         ('Tester', 'Tester')
     )
     STATUS_CHOICE_1 = (
         ('Work Assigned', 'Work Assigned'),
         ('Work in Progress', 'Work in Progress'),
         ('Testing', 'Testing'),
         ('Completed', 'Completed')
     )
     Project_Name = models.CharField(max_length=100)
     Project_Description = models.CharField(max_length=100)
     Admin_Name = models.CharField(max_length=100)
     Admin_Mail_ID = models.EmailField(max_length=50)
     Project_Manager_1 = models.ForeignKey(User, on_delete=models.CASCADE, related_name='Project_Manager_1_users')
     Project_Manager_1_Mail_ID = models.EmailField(max_length=50)
     Project_Manager_2 = models.ForeignKey(User, on_delete=models.CASCADE, related_name='Project_Manager_2_users')
     Project_Manager_2_Mail_ID = models.EmailField(max_length=50, blank=True, null=True)
     Technician_1 = models.ForeignKey(User, on_delete=models.CASCADE, related_name='Technician_1_users')
     Technician_1_Mail_ID = models.EmailField(max_length=50)
     Technician_2 = models.ForeignKey(User, on_delete=models.CASCADE, related_name='Technician_2_users')
     Technician_2_Mail_ID = models.EmailField(max_length=50, blank=True, null=True)
     Technician_3 = models.ForeignKey(User, on_delete=models.CASCADE, related_name='Technician_3_users')
     Technician_3_Mail_ID = models.EmailField(max_length=50, blank=True, null=True)
     Tester_1 = models.ForeignKey(User, on_delete=models.CASCADE, related_name='Tester_1_users')
     Tester_1_Mail_ID = models.EmailField(max_length=50, default='Example@gmail.com')
     Additional_User_1 = models.ForeignKey(User, on_delete=models.CASCADE, related_name='Ad_1_users')
     Additional_User_1_Type = models.CharField(max_length=18, choices=STATUS_CHOICE, blank=True, null=True)
     Additional_User_1_Mail_ID = models.EmailField(max_length=50, blank=True, null=True)
     Additional_User_2 = models.ForeignKey(User, on_delete=models.CASCADE, related_name='Ad_1_users')
     Additional_User_2_Type = models.CharField(max_length=18, choices=STATUS_CHOICE, blank=True, null=True)
     Additional_User_2_Mail_ID = models.EmailField(max_length=50, blank=True, null=True)
     Additional_User_3 = models.ForeignKey(User, on_delete=models.CASCADE, related_name='Ad_1_users')
     Additional_User_3_Type = models.CharField(max_length=18, choices=STATUS_CHOICE, blank=True, null=True)
     Additional_User_3_Mail_ID = models.EmailField(max_length=50, blank=True, null=True)
     Status_of_the_project = models.CharField(max_length=18, choices=STATUS_CHOICE_1)
     Created = models.DateTimeField(auto_now_add=True, null=True, blank=True)
     Finish_Date = models.DateTimeField(null=True, blank=True)
     Supporting_Documents = models.FileField(null=True, blank=True)
  
  
     def __str__(self):
         return self.Project_Name
  
     class Meta:
         verbose_name_plural = "List Of Projects"
  
  class Bug(models.Model):
  
     STATUS_CHOICE = (
         ('Unassigned', 'Unassigned'),
         ('Assigned', 'Assigned'),
         ('Testing', 'Testing'),
         ('Tested', 'tested'),
         ('Fixed', 'Fixed')
     )
     STATUS_CHOICE_1 = (
         ('Bug', 'Bug'),
         ('Issue', 'Issue'),
         ('Enhancement', 'Enhancement'),
         ('Not an issue or bug', 'Not an issue or bug'),
         ('Fixed', 'Fixed')
     )
     Project = models.ForeignKey(Project, on_delete=models.CASCADE)
     Issue_Title = models.CharField(max_length=50, blank=True, null=True)
     Situation_Type = models.CharField(max_length=25, choices=STATUS_CHOICE_1)
     Basic_Description = models.CharField(max_length=100)
     Detailed_Description = models.TextField(default='The Description, here.')
     Status = models.CharField(max_length=18, choices=STATUS_CHOICE)
     Assigned_to = models.ForeignKey(User, on_delete=models.CASCADE)
     Assigned_to_Mail_ID = models.EmailField(max_length=50, blank=True, null=True)
     Admin_Mail_ID = models.EmailField(max_length=50, blank=True, null=True)
     Reported_by = models.CharField(max_length=50, blank=True, null=True)
     Reporters_Mail_ID = models.EmailField(max_length=50, blank=True, null=True)
     Reported_Date = models.DateTimeField(null=True, blank=True)
     Created = models.DateTimeField(auto_now_add=True, null=True, blank=True)
     Updated = models.DateTimeField(auto_now=True, null=True, blank=True)
     Deadline_Date = models.DateTimeField(null=True, blank=True)
     Supporting_Documents_By_Reporter = models.FileField(null=True, blank=True)
     Project_Managers_Comment = models.TextField(default='The Description, here.')
     Supporting_Documents_by_Project_Manager = models.FileField(null=True, blank=True)
     Technicians_Comment = models.TextField(default='The Description, here.')
     Supporting_Documents_by_Technician = models.FileField(null=True, blank=True)
     Testers_Comment = models.TextField(default='The Description, here.')
     Supporting_Documents_by_Tester = models.FileField(null=True, blank=True)
  
     def __str__(self):
         return self.Project + ' (' + self.Situation_Type + ') ' + ' [' + self.Status + '] '
  
  
     def save(self, force_insert=False, force_update=False, using=None,
               update_fields=None):
         if self.id:
             user=self.Assigned_to
             self.Assigned_to_Mail_ID=user.email
         send_mail(self.Admin_Mail_ID, ass=self.Assigned_to_Mail_ID)
         super(Bug, self).save()
  
     class Meta:
         verbose_name_plural = "Projects Tasks/Issues"
  
  
  
  
  def send_mail(admin,ass):
      email=EmailMessage('Changes made to Task','Changes have been made to one of your Task reports and we hereby request you to have a look at it at the earliest.', to=[admin,ass])
      email.send()
  </code></pre>
  
  <p>This is a project that I've been working on for quite some time. I dont have a lot of experience in Django/Python.. </p>
  
  <p><strong>1) Database Key related isssue</strong></p>
  
  <p><em>How do I extract the email ID of the users and make it get autofilled when the user of the admin site chooses the Users Name using the drop down list?</em></p>
  
  <p><strong>2) Alternate Database Design Ideas</strong></p>
  
  <p><em>What is the best way to optimize the Users list? Is there any other way you guys could suggest me (a noob) to make the website in such a way that the Additional users could be added without limiting the website to accommodate only 3 Additional users?</em></p>
  
  <p><strong>3) <code>related_name</code> Issue</strong></p>
  
  <p><em>Why am I getting the following error when I use <code>related_name=</code>? How do I fix it?</em></p>
  
  <pre><code>ERRORS:
  Issues.Project.Additional_User_1: (fields.E304) Reverse accessor for 'Project.Additional_User_1' clashes with reverse accessor for 'Project.Additional_User_2'.
          HINT: Add or change a related_name argument to the definition for 'Project.Additional_User_1' or 'Project.Additional_User_2'.
  Issues.Project.Additional_User_1: (fields.E304) Reverse accessor for 'Project.Additional_User_1' clashes with reverse accessor for 'Project.Additional_User_3'.
          HINT: Add or change a related_name argument to the definition for 'Project.Additional_User_1' or 'Project.Additional_User_3'.
  Issues.Project.Additional_User_1: (fields.E305) Reverse query name for 'Project.Additional_User_1' clashes with reverse query name for 'Project.Additional_User_2'.
          HINT: Add or change a related_name argument to the definition for 'Project.Additional_User_1' or 'Project.Additional_User_2'.
  Issues.Project.Additional_User_1: (fields.E305) Reverse query name for 'Project.Additional_User_1' clashes with reverse query name for 'Project.Additional_User_3'.
          HINT: Add or change a related_name argument to the definition for 'Project.Additional_User_1' or 'Project.Additional_User_3'.
  Issues.Project.Additional_User_2: (fields.E304) Reverse accessor for 'Project.Additional_User_2' clashes with reverse accessor for 'Project.Additional_User_1'.
          HINT: Add or change a related_name argument to the definition for 'Project.Additional_User_2' or 'Project.Additional_User_1'.
  Issues.Project.Additional_User_2: (fields.E304) Reverse accessor for 'Project.Additional_User_2' clashes with reverse accessor for 'Project.Additional_User_3'.
          HINT: Add or change a related_name argument to the definition for 'Project.Additional_User_2' or 'Project.Additional_User_3'.
  Issues.Project.Additional_User_2: (fields.E305) Reverse query name for 'Project.Additional_User_2' clashes with reverse query name for 'Project.Additional_User_1'.
          HINT: Add or change a related_name argument to the definition for 'Project.Additional_User_2' or 'Project.Additional_User_1'.
  Issues.Project.Additional_User_2: (fields.E305) Reverse query name for 'Project.Additional_User_2' clashes with reverse query name for 'Project.Additional_User_3'.
          HINT: Add or change a related_name argument to the definition for 'Project.Additional_User_2' or 'Project.Additional_User_3'.
  Issues.Project.Additional_User_3: (fields.E304) Reverse accessor for 'Project.Additional_User_3' clashes with reverse accessor for 'Project.Additional_User_1'.
          HINT: Add or change a related_name argument to the definition for 'Project.Additional_User_3' or 'Project.Additional_User_1'.
  Issues.Project.Additional_User_3: (fields.E304) Reverse accessor for 'Project.Additional_User_3' clashes with reverse accessor for 'Project.Additional_User_2'.
          HINT: Add or change a related_name argument to the definition for 'Project.Additional_User_3' or 'Project.Additional_User_2'.
  Issues.Project.Additional_User_3: (fields.E305) Reverse query name for 'Project.Additional_User_3' clashes with reverse query name for 'Project.Additional_User_1'.
          HINT: Add or change a related_name argument to the definition for 'Project.Additional_User_3' or 'Project.Additional_User_1'.
  Issues.Project.Additional_User_3: (fields.E305) Reverse query name for 'Project.Additional_User_3' clashes with reverse query name for 'Project.Additional_User_2'.
          HINT: Add or change a related_name argument to the definition for 'Project.Additional_User_3' or 'Project.Additional_User_2'.
  </code></pre>
  
  <p>Please do keep in mind that I'm still a beginner and dont have a lot of knowledge about the subject. You might have to be a bit more descriptive for me to understand what you mean.
  Thank you so much!</p>