title: Understanding ManyToMany fields in Django with a through model
body: <p>I'm having trouble understanding the use of ManyToMany models fields with a through model. I can easily achieve the same without the ManyToMany field. Considering the following from Django's docs:</p>
  
  <pre><code>class Person(models.Model):
      name = models.CharField(max_length=128)
  
  
  class Group(models.Model):
      name = models.CharField(max_length=128)
      members = models.ManyToManyField(Person, through='Membership')
  
  
  class Membership(models.Model):
      person = models.ForeignKey(Person, on_delete=models.CASCADE)
      group = models.ForeignKey(Group, on_delete=models.CASCADE)
      date_joined = models.DateField()
      invite_reason = models.CharField(max_length=64)
  </code></pre>
  
  <p>What I don't understand, is how is using the ManyToMany field better than simply dropping it and using the related manager. For instance, the two models will change to the following:</p>
  
  <pre><code>class Group(models.Model):
      name = models.CharField(max_length=128)
  
  
  class Membership(models.Model):
      person = models.ForeignKey(Person, on_delete=models.CASCADE)
      group = models.ForeignKey(Group, on_delete=models.CASCADE, related_name='members')
      date_joined = models.DateField()
      invite_reason = models.CharField(max_length=64)
  </code></pre>
  
  <p>What am I missing here?</p>