models.py 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. from __future__ import unicode_literals
  2. from django.contrib.contenttypes.fields import (
  3. GenericForeignKey, GenericRelation,
  4. )
  5. from django.contrib.contenttypes.models import ContentType
  6. from django.db import models
  7. from django.utils.encoding import python_2_unicode_compatible
  8. @python_2_unicode_compatible
  9. class Square(models.Model):
  10. root = models.IntegerField()
  11. square = models.PositiveIntegerField()
  12. def __str__(self):
  13. return "%s ** 2 == %s" % (self.root, self.square)
  14. @python_2_unicode_compatible
  15. class Person(models.Model):
  16. first_name = models.CharField(max_length=20)
  17. last_name = models.CharField(max_length=20)
  18. def __str__(self):
  19. return '%s %s' % (self.first_name, self.last_name)
  20. class SchoolClass(models.Model):
  21. year = models.PositiveIntegerField()
  22. day = models.CharField(max_length=9, blank=True)
  23. last_updated = models.DateTimeField()
  24. class VeryLongModelNameZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZZ(models.Model):
  25. class Meta:
  26. # We need to use a short actual table name or
  27. # we hit issue #8548 which we're not testing!
  28. verbose_name = 'model_with_long_table_name'
  29. primary_key_is_quite_long_zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz = models.AutoField(primary_key=True)
  30. charfield_is_quite_long_zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz = models.CharField(max_length=100)
  31. m2m_also_quite_long_zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz = models.ManyToManyField(Person, blank=True)
  32. class Tag(models.Model):
  33. name = models.CharField(max_length=30)
  34. content_type = models.ForeignKey(ContentType, models.CASCADE, related_name='backend_tags')
  35. object_id = models.PositiveIntegerField()
  36. content_object = GenericForeignKey('content_type', 'object_id')
  37. class Post(models.Model):
  38. name = models.CharField(max_length=30)
  39. text = models.TextField()
  40. tags = GenericRelation('Tag')
  41. class Meta:
  42. db_table = 'CaseSensitive_Post'
  43. @python_2_unicode_compatible
  44. class Reporter(models.Model):
  45. first_name = models.CharField(max_length=30)
  46. last_name = models.CharField(max_length=30)
  47. def __str__(self):
  48. return "%s %s" % (self.first_name, self.last_name)
  49. class ReporterProxy(Reporter):
  50. class Meta:
  51. proxy = True
  52. @python_2_unicode_compatible
  53. class Article(models.Model):
  54. headline = models.CharField(max_length=100)
  55. pub_date = models.DateField()
  56. reporter = models.ForeignKey(Reporter, models.CASCADE)
  57. reporter_proxy = models.ForeignKey(
  58. ReporterProxy,
  59. models.SET_NULL,
  60. null=True,
  61. related_name='reporter_proxy',
  62. )
  63. def __str__(self):
  64. return self.headline
  65. @python_2_unicode_compatible
  66. class Item(models.Model):
  67. name = models.CharField(max_length=30)
  68. date = models.DateField()
  69. time = models.TimeField()
  70. last_modified = models.DateTimeField()
  71. def __str__(self):
  72. return self.name
  73. @python_2_unicode_compatible
  74. class Object(models.Model):
  75. related_objects = models.ManyToManyField("self", db_constraint=False, symmetrical=False)
  76. def __str__(self):
  77. return str(self.id)
  78. @python_2_unicode_compatible
  79. class ObjectReference(models.Model):
  80. obj = models.ForeignKey(Object, models.CASCADE, db_constraint=False)
  81. def __str__(self):
  82. return str(self.obj_id)
  83. class RawData(models.Model):
  84. raw_data = models.BinaryField()