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 Square(models.Model):
    
  7.     root = models.IntegerField()
    
  8.     square = models.PositiveIntegerField()
    
  9. 
    
  10.     def __str__(self):
    
  11.         return "%s ** 2 == %s" % (self.root, self.square)
    
  12. 
    
  13. 
    
  14. class Person(models.Model):
    
  15.     first_name = models.CharField(max_length=20)
    
  16.     last_name = models.CharField(max_length=20)
    
  17. 
    
  18.     def __str__(self):
    
  19.         return "%s %s" % (self.first_name, self.last_name)
    
  20. 
    
  21. 
    
  22. class SchoolClassManager(models.Manager):
    
  23.     def get_queryset(self):
    
  24.         return super().get_queryset().exclude(year=1000)
    
  25. 
    
  26. 
    
  27. class SchoolClass(models.Model):
    
  28.     year = models.PositiveIntegerField()
    
  29.     day = models.CharField(max_length=9, blank=True)
    
  30.     last_updated = models.DateTimeField()
    
  31. 
    
  32.     objects = SchoolClassManager()
    
  33. 
    
  34. 
    
  35. class VeryLongModelNameZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ(models.Model):
    
  36.     primary_key_is_quite_long_zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz = models.AutoField(
    
  37.         primary_key=True
    
  38.     )
    
  39.     charfield_is_quite_long_zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz = models.CharField(
    
  40.         max_length=100
    
  41.     )
    
  42.     m2m_also_quite_long_zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz = (
    
  43.         models.ManyToManyField(Person, blank=True)
    
  44.     )
    
  45. 
    
  46. 
    
  47. class Tag(models.Model):
    
  48.     name = models.CharField(max_length=30)
    
  49.     content_type = models.ForeignKey(
    
  50.         ContentType, models.CASCADE, related_name="backend_tags"
    
  51.     )
    
  52.     object_id = models.PositiveIntegerField()
    
  53.     content_object = GenericForeignKey("content_type", "object_id")
    
  54. 
    
  55. 
    
  56. class Post(models.Model):
    
  57.     name = models.CharField(max_length=30)
    
  58.     text = models.TextField()
    
  59.     tags = GenericRelation("Tag")
    
  60. 
    
  61.     class Meta:
    
  62.         db_table = "CaseSensitive_Post"
    
  63. 
    
  64. 
    
  65. class Reporter(models.Model):
    
  66.     first_name = models.CharField(max_length=30)
    
  67.     last_name = models.CharField(max_length=30)
    
  68. 
    
  69.     def __str__(self):
    
  70.         return "%s %s" % (self.first_name, self.last_name)
    
  71. 
    
  72. 
    
  73. class ReporterProxy(Reporter):
    
  74.     class Meta:
    
  75.         proxy = True
    
  76. 
    
  77. 
    
  78. class Article(models.Model):
    
  79.     headline = models.CharField(max_length=100)
    
  80.     pub_date = models.DateField()
    
  81.     reporter = models.ForeignKey(Reporter, models.CASCADE)
    
  82.     reporter_proxy = models.ForeignKey(
    
  83.         ReporterProxy,
    
  84.         models.SET_NULL,
    
  85.         null=True,
    
  86.         related_name="reporter_proxy",
    
  87.     )
    
  88. 
    
  89.     def __str__(self):
    
  90.         return self.headline
    
  91. 
    
  92. 
    
  93. class Item(models.Model):
    
  94.     name = models.CharField(max_length=30)
    
  95.     date = models.DateField()
    
  96.     time = models.TimeField()
    
  97.     last_modified = models.DateTimeField()
    
  98. 
    
  99.     def __str__(self):
    
  100.         return self.name
    
  101. 
    
  102. 
    
  103. class Object(models.Model):
    
  104.     related_objects = models.ManyToManyField(
    
  105.         "self", db_constraint=False, symmetrical=False
    
  106.     )
    
  107.     obj_ref = models.ForeignKey("ObjectReference", models.CASCADE, null=True)
    
  108. 
    
  109.     def __str__(self):
    
  110.         return str(self.id)
    
  111. 
    
  112. 
    
  113. class ObjectReference(models.Model):
    
  114.     obj = models.ForeignKey(Object, models.CASCADE, db_constraint=False)
    
  115. 
    
  116.     def __str__(self):
    
  117.         return str(self.obj_id)
    
  118. 
    
  119. 
    
  120. class ObjectSelfReference(models.Model):
    
  121.     key = models.CharField(max_length=3, unique=True)
    
  122.     obj = models.ForeignKey("ObjectSelfReference", models.SET_NULL, null=True)
    
  123. 
    
  124. 
    
  125. class CircularA(models.Model):
    
  126.     key = models.CharField(max_length=3, unique=True)
    
  127.     obj = models.ForeignKey("CircularB", models.SET_NULL, null=True)
    
  128. 
    
  129.     def natural_key(self):
    
  130.         return (self.key,)
    
  131. 
    
  132. 
    
  133. class CircularB(models.Model):
    
  134.     key = models.CharField(max_length=3, unique=True)
    
  135.     obj = models.ForeignKey("CircularA", models.SET_NULL, null=True)
    
  136. 
    
  137.     def natural_key(self):
    
  138.         return (self.key,)
    
  139. 
    
  140. 
    
  141. class RawData(models.Model):
    
  142.     raw_data = models.BinaryField()
    
  143. 
    
  144. 
    
  145. class Author(models.Model):
    
  146.     name = models.CharField(max_length=255, unique=True)
    
  147. 
    
  148. 
    
  149. class Book(models.Model):
    
  150.     author = models.ForeignKey(Author, models.CASCADE, to_field="name")
    
  151. 
    
  152. 
    
  153. class SQLKeywordsModel(models.Model):
    
  154.     id = models.AutoField(primary_key=True, db_column="select")
    
  155.     reporter = models.ForeignKey(Reporter, models.CASCADE, db_column="where")
    
  156. 
    
  157.     class Meta:
    
  158.         db_table = "order"