1. from django.db import models
    
  2. 
    
  3. 
    
  4. class Person(models.Model):
    
  5.     first_name = models.CharField(max_length=20)
    
  6.     last_name = models.CharField(max_length=20)
    
  7.     friends = models.ManyToManyField("self")
    
  8. 
    
  9. 
    
  10. # A set of models that use a non-abstract inherited 'through' model.
    
  11. class ThroughBase(models.Model):
    
  12.     person = models.ForeignKey(Person, models.CASCADE)
    
  13.     b = models.ForeignKey("B", models.CASCADE)
    
  14. 
    
  15. 
    
  16. class Through(ThroughBase):
    
  17.     extra = models.CharField(max_length=20)
    
  18. 
    
  19. 
    
  20. class B(models.Model):
    
  21.     people = models.ManyToManyField(Person, through=Through)