1. from django.db import models
    
  2. 
    
  3. 
    
  4. class Author(models.Model):
    
  5.     first_name = models.CharField(max_length=128)
    
  6.     last_name = models.CharField(max_length=128)
    
  7. 
    
  8. 
    
  9. class Editor(models.Model):
    
  10.     name = models.CharField(max_length=128)
    
  11.     bestselling_author = models.ForeignKey(Author, models.CASCADE)
    
  12. 
    
  13. 
    
  14. class Book(models.Model):
    
  15.     title = models.CharField(max_length=128)
    
  16.     authors = models.ManyToManyField(Author)
    
  17.     editor = models.ForeignKey(Editor, models.CASCADE, related_name="edited_books")
    
  18. 
    
  19.     class Meta:
    
  20.         default_related_name = "books"
    
  21. 
    
  22. 
    
  23. class Store(models.Model):
    
  24.     name = models.CharField(max_length=128)
    
  25.     address = models.CharField(max_length=128)
    
  26. 
    
  27.     class Meta:
    
  28.         abstract = True
    
  29.         default_related_name = "%(app_label)s_%(model_name)ss"
    
  30. 
    
  31. 
    
  32. class BookStore(Store):
    
  33.     available_books = models.ManyToManyField(Book)
    
  34. 
    
  35. 
    
  36. class EditorStore(Store):
    
  37.     editor = models.ForeignKey(Editor, models.CASCADE)
    
  38.     available_books = models.ManyToManyField(Book)
    
  39. 
    
  40.     class Meta:
    
  41.         default_related_name = "editor_stores"