1. """
    
  2. Many-to-many relationships via an intermediary table
    
  3. 
    
  4. For many-to-many relationships that need extra fields on the intermediary
    
  5. table, use an intermediary model.
    
  6. 
    
  7. In this example, an ``Article`` can have multiple ``Reporter`` objects, and
    
  8. each ``Article``-``Reporter`` combination (a ``Writer``) has a ``position``
    
  9. field, which specifies the ``Reporter``'s position for the given article
    
  10. (e.g. "Staff writer").
    
  11. """
    
  12. from django.db import models
    
  13. 
    
  14. 
    
  15. class Reporter(models.Model):
    
  16.     first_name = models.CharField(max_length=30)
    
  17.     last_name = models.CharField(max_length=30)
    
  18. 
    
  19.     def __str__(self):
    
  20.         return "%s %s" % (self.first_name, self.last_name)
    
  21. 
    
  22. 
    
  23. class Article(models.Model):
    
  24.     headline = models.CharField(max_length=100)
    
  25.     pub_date = models.DateField()
    
  26. 
    
  27. 
    
  28. class Writer(models.Model):
    
  29.     reporter = models.ForeignKey(Reporter, models.CASCADE)
    
  30.     article = models.ForeignKey(Article, models.CASCADE)
    
  31.     position = models.CharField(max_length=100)