1. from django.contrib.contenttypes.fields import GenericForeignKey, GenericRelation
    
  2. from django.contrib.contenttypes.models import ContentType
    
  3. from django.db import models
    
  4. 
    
  5. 
    
  6. class Award(models.Model):
    
  7.     name = models.CharField(max_length=25)
    
  8.     object_id = models.PositiveIntegerField()
    
  9.     content_type = models.ForeignKey(ContentType, models.CASCADE)
    
  10.     content_object = GenericForeignKey()
    
  11. 
    
  12. 
    
  13. class AwardNote(models.Model):
    
  14.     award = models.ForeignKey(Award, models.CASCADE)
    
  15.     note = models.CharField(max_length=100)
    
  16. 
    
  17. 
    
  18. class Person(models.Model):
    
  19.     name = models.CharField(max_length=25)
    
  20.     awards = GenericRelation(Award)
    
  21. 
    
  22. 
    
  23. class Book(models.Model):
    
  24.     pagecount = models.IntegerField()
    
  25.     owner = models.ForeignKey("Child", models.CASCADE, null=True)
    
  26. 
    
  27. 
    
  28. class Toy(models.Model):
    
  29.     name = models.CharField(max_length=50)
    
  30. 
    
  31. 
    
  32. class Child(models.Model):
    
  33.     name = models.CharField(max_length=50)
    
  34.     toys = models.ManyToManyField(Toy, through="PlayedWith")
    
  35. 
    
  36. 
    
  37. class PlayedWith(models.Model):
    
  38.     child = models.ForeignKey(Child, models.CASCADE)
    
  39.     toy = models.ForeignKey(Toy, models.CASCADE)
    
  40.     date = models.DateField(db_column="date_col")
    
  41. 
    
  42. 
    
  43. class PlayedWithNote(models.Model):
    
  44.     played = models.ForeignKey(PlayedWith, models.CASCADE)
    
  45.     note = models.TextField()
    
  46. 
    
  47. 
    
  48. class Contact(models.Model):
    
  49.     label = models.CharField(max_length=100)
    
  50. 
    
  51. 
    
  52. class Email(Contact):
    
  53.     email_address = models.EmailField(max_length=100)
    
  54. 
    
  55. 
    
  56. class Researcher(models.Model):
    
  57.     contacts = models.ManyToManyField(Contact, related_name="research_contacts")
    
  58.     primary_contact = models.ForeignKey(
    
  59.         Contact, models.SET_NULL, null=True, related_name="primary_contacts"
    
  60.     )
    
  61.     secondary_contact = models.ForeignKey(
    
  62.         Contact, models.SET_NULL, null=True, related_name="secondary_contacts"
    
  63.     )
    
  64. 
    
  65. 
    
  66. class Food(models.Model):
    
  67.     name = models.CharField(max_length=20, unique=True)
    
  68. 
    
  69. 
    
  70. class Eaten(models.Model):
    
  71.     food = models.ForeignKey(Food, models.CASCADE, to_field="name")
    
  72.     meal = models.CharField(max_length=20)
    
  73. 
    
  74. 
    
  75. # Models for #15776
    
  76. 
    
  77. 
    
  78. class Policy(models.Model):
    
  79.     policy_number = models.CharField(max_length=10)
    
  80. 
    
  81. 
    
  82. class Version(models.Model):
    
  83.     policy = models.ForeignKey(Policy, models.CASCADE)
    
  84. 
    
  85. 
    
  86. class Location(models.Model):
    
  87.     version = models.ForeignKey(Version, models.SET_NULL, blank=True, null=True)
    
  88. 
    
  89. 
    
  90. class Item(models.Model):
    
  91.     version = models.ForeignKey(Version, models.CASCADE)
    
  92.     location = models.ForeignKey(Location, models.SET_NULL, blank=True, null=True)
    
  93. 
    
  94. 
    
  95. # Models for #16128
    
  96. 
    
  97. 
    
  98. class File(models.Model):
    
  99.     pass
    
  100. 
    
  101. 
    
  102. class Image(File):
    
  103.     class Meta:
    
  104.         proxy = True
    
  105. 
    
  106. 
    
  107. class Photo(Image):
    
  108.     class Meta:
    
  109.         proxy = True
    
  110. 
    
  111. 
    
  112. class FooImage(models.Model):
    
  113.     my_image = models.ForeignKey(Image, models.CASCADE)
    
  114. 
    
  115. 
    
  116. class FooFile(models.Model):
    
  117.     my_file = models.ForeignKey(File, models.CASCADE)
    
  118. 
    
  119. 
    
  120. class FooPhoto(models.Model):
    
  121.     my_photo = models.ForeignKey(Photo, models.CASCADE)
    
  122. 
    
  123. 
    
  124. class FooFileProxy(FooFile):
    
  125.     class Meta:
    
  126.         proxy = True
    
  127. 
    
  128. 
    
  129. class OrgUnit(models.Model):
    
  130.     name = models.CharField(max_length=64, unique=True)
    
  131. 
    
  132. 
    
  133. class Login(models.Model):
    
  134.     description = models.CharField(max_length=32)
    
  135.     orgunit = models.ForeignKey(OrgUnit, models.CASCADE)
    
  136. 
    
  137. 
    
  138. class House(models.Model):
    
  139.     address = models.CharField(max_length=32)
    
  140. 
    
  141. 
    
  142. class OrderedPerson(models.Model):
    
  143.     name = models.CharField(max_length=32)
    
  144.     lives_in = models.ForeignKey(House, models.CASCADE)
    
  145. 
    
  146.     class Meta:
    
  147.         ordering = ["name"]