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. 
    
  9. 
    
  10. class Publisher(models.Model):
    
  11.     name = models.CharField(max_length=255)
    
  12.     num_awards = models.IntegerField()
    
  13. 
    
  14. 
    
  15. class Book(models.Model):
    
  16.     isbn = models.CharField(max_length=9)
    
  17.     name = models.CharField(max_length=255)
    
  18.     pages = models.IntegerField()
    
  19.     rating = models.FloatField()
    
  20.     price = models.DecimalField(decimal_places=2, max_digits=6)
    
  21.     authors = models.ManyToManyField(Author)
    
  22.     contact = models.ForeignKey(Author, models.CASCADE, related_name="book_contact_set")
    
  23.     publisher = models.ForeignKey(Publisher, models.CASCADE)
    
  24.     pubdate = models.DateField()
    
  25. 
    
  26. 
    
  27. class Store(models.Model):
    
  28.     name = models.CharField(max_length=255)
    
  29.     books = models.ManyToManyField(Book)
    
  30.     original_opening = models.DateTimeField()
    
  31.     friday_night_closing = models.TimeField()
    
  32.     area = models.IntegerField(null=True, db_column="surface")
    
  33. 
    
  34. 
    
  35. class DepartmentStore(Store):
    
  36.     chain = models.CharField(max_length=255)
    
  37. 
    
  38. 
    
  39. class Employee(models.Model):
    
  40.     # The order of these fields matter, do not change. Certain backends
    
  41.     # rely on field ordering to perform database conversions, and this
    
  42.     # model helps to test that.
    
  43.     first_name = models.CharField(max_length=20)
    
  44.     manager = models.BooleanField(default=False)
    
  45.     last_name = models.CharField(max_length=20)
    
  46.     store = models.ForeignKey(Store, models.CASCADE)
    
  47.     age = models.IntegerField()
    
  48.     salary = models.DecimalField(max_digits=8, decimal_places=2)
    
  49. 
    
  50. 
    
  51. class Company(models.Model):
    
  52.     name = models.CharField(max_length=200)
    
  53.     motto = models.CharField(max_length=200, null=True, blank=True)
    
  54.     ticker_name = models.CharField(max_length=10, null=True, blank=True)
    
  55.     description = models.CharField(max_length=200, null=True, blank=True)
    
  56. 
    
  57. 
    
  58. class Ticket(models.Model):
    
  59.     active_at = models.DateTimeField()
    
  60.     duration = models.DurationField()