models.py 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. from django.contrib.contenttypes.fields import (
  2. GenericForeignKey, GenericRelation
  3. )
  4. from django.contrib.contenttypes.models import ContentType
  5. from django.db import models
  6. class Award(models.Model):
  7. name = models.CharField(max_length=25)
  8. object_id = models.PositiveIntegerField()
  9. content_type = models.ForeignKey(ContentType)
  10. content_object = GenericForeignKey()
  11. class AwardNote(models.Model):
  12. award = models.ForeignKey(Award)
  13. note = models.CharField(max_length=100)
  14. class Person(models.Model):
  15. name = models.CharField(max_length=25)
  16. awards = GenericRelation(Award)
  17. class Book(models.Model):
  18. pagecount = models.IntegerField()
  19. class Toy(models.Model):
  20. name = models.CharField(max_length=50)
  21. class Child(models.Model):
  22. name = models.CharField(max_length=50)
  23. toys = models.ManyToManyField(Toy, through='PlayedWith')
  24. class PlayedWith(models.Model):
  25. child = models.ForeignKey(Child)
  26. toy = models.ForeignKey(Toy)
  27. date = models.DateField(db_column='date_col')
  28. class PlayedWithNote(models.Model):
  29. played = models.ForeignKey(PlayedWith)
  30. note = models.TextField()
  31. class Contact(models.Model):
  32. label = models.CharField(max_length=100)
  33. class Email(Contact):
  34. email_address = models.EmailField(max_length=100)
  35. class Researcher(models.Model):
  36. contacts = models.ManyToManyField(Contact, related_name="research_contacts")
  37. class Food(models.Model):
  38. name = models.CharField(max_length=20, unique=True)
  39. class Eaten(models.Model):
  40. food = models.ForeignKey(Food, to_field="name")
  41. meal = models.CharField(max_length=20)
  42. # Models for #15776
  43. class Policy(models.Model):
  44. policy_number = models.CharField(max_length=10)
  45. class Version(models.Model):
  46. policy = models.ForeignKey(Policy)
  47. class Location(models.Model):
  48. version = models.ForeignKey(Version, blank=True, null=True)
  49. class Item(models.Model):
  50. version = models.ForeignKey(Version)
  51. location = models.ForeignKey(Location, blank=True, null=True)
  52. # Models for #16128
  53. class File(models.Model):
  54. pass
  55. class Image(File):
  56. class Meta:
  57. proxy = True
  58. class Photo(Image):
  59. class Meta:
  60. proxy = True
  61. class FooImage(models.Model):
  62. my_image = models.ForeignKey(Image)
  63. class FooFile(models.Model):
  64. my_file = models.ForeignKey(File)
  65. class FooPhoto(models.Model):
  66. my_photo = models.ForeignKey(Photo)
  67. class FooFileProxy(FooFile):
  68. class Meta:
  69. proxy = True
  70. class OrgUnit(models.Model):
  71. name = models.CharField(max_length=64, unique=True)
  72. class Login(models.Model):
  73. description = models.CharField(max_length=32)
  74. orgunit = models.ForeignKey(OrgUnit)
  75. class House(models.Model):
  76. address = models.CharField(max_length=32)
  77. class OrderedPerson(models.Model):
  78. name = models.CharField(max_length=32)
  79. lives_in = models.ForeignKey(House)
  80. class Meta:
  81. ordering = ['name']