1. from django.db import models
    
  2. 
    
  3. 
    
  4. class Author(models.Model):
    
  5.     name = models.CharField(max_length=100)
    
  6.     age = models.IntegerField()
    
  7.     friends = models.ManyToManyField("self", blank=True)
    
  8.     rating = models.FloatField(null=True)
    
  9. 
    
  10.     def __str__(self):
    
  11.         return self.name
    
  12. 
    
  13. 
    
  14. class Publisher(models.Model):
    
  15.     name = models.CharField(max_length=255)
    
  16.     num_awards = models.IntegerField()
    
  17.     duration = models.DurationField(blank=True, null=True)
    
  18. 
    
  19.     def __str__(self):
    
  20.         return self.name
    
  21. 
    
  22. 
    
  23. class Book(models.Model):
    
  24.     isbn = models.CharField(max_length=9)
    
  25.     name = models.CharField(max_length=255)
    
  26.     pages = models.IntegerField()
    
  27.     rating = models.FloatField()
    
  28.     price = models.DecimalField(decimal_places=2, max_digits=6)
    
  29.     authors = models.ManyToManyField(Author)
    
  30.     contact = models.ForeignKey(Author, models.CASCADE, related_name="book_contact_set")
    
  31.     publisher = models.ForeignKey(Publisher, models.CASCADE)
    
  32.     pubdate = models.DateField()
    
  33. 
    
  34.     def __str__(self):
    
  35.         return self.name
    
  36. 
    
  37. 
    
  38. class Store(models.Model):
    
  39.     name = models.CharField(max_length=255)
    
  40.     books = models.ManyToManyField(Book)
    
  41.     original_opening = models.DateTimeField()
    
  42.     friday_night_closing = models.TimeField()
    
  43. 
    
  44.     def __str__(self):
    
  45.         return self.name