title: AttributeError: 'ManyToManyField' object has no attribute '_m2m_reverse_name_cache'
body: <p>I'm trying to assign Project Manager to Employee.</p>
  
  <ul>
  <li><p>Every Employee, can be Project Manager.</p></li>
  <li><p>Project Managers can have multiple Employees.</p></li>
  <li><p>Employees can have only 1 Project Manager.</p></li>
  </ul>
  
  <p>But When I do <code>Employee.objects.get(name='HereHere').get_xxx()</code> </p>
  
  <p>I got <code>AttributeError: 'ManyToManyField' object has no attribute '_m2m_reverse_name_cache'</code></p>
  
  <pre class="lang-py prettyprint-override"><code>class Employee(models.Model):
      name = models.CharField(max_length=20, unique=True)
      pm = models.ManyToManyField('self', symmetrical=False, through='PM', related_name='related_to', )
  
      def add_pm(self, employee, ):
          pm, created = PM.objects.get_or_create(from_employee=self, to_employee__in=employee,)
          return pm
  
      def remove_pm(self, employee, ):
          PM.objects.filter(
              from_employee=self,
              to_employee=employee,
          ).delete()
          return
  
      def get_relationships(self, ):
          return self.pm.filter(
              to_employee__from_employee=self)   #&lt;----- AttributeError: 'ManyToManyField' object has no attribute '_m2m_reverse_name_cache'
  
      def get_related_to(self,):
          return self.related_to.filter(
              from_employee__to_employee=self)    #&lt;----- AttributeError: 'ManyToManyField' object has no attribute '_m2m_reverse_name_cache'
  
  
      def __str__(self):
          return '%s' % self.name
  
  
  class PM(models.Model):
      from_employee = models.ForeignKey(Employee, related_name='from_employee')
      to_employee = models.ManyToManyField(Employee, related_name='to_employee') #&lt;----- This cause the problem
  </code></pre>