models.py 3.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. import datetime
  2. import uuid
  3. from decimal import Decimal
  4. from django.db import models
  5. from django.utils import timezone
  6. try:
  7. from PIL import Image
  8. except ImportError:
  9. Image = None
  10. class Country(models.Model):
  11. name = models.CharField(max_length=255)
  12. iso_two_letter = models.CharField(max_length=2)
  13. description = models.TextField()
  14. class ProxyCountry(Country):
  15. class Meta:
  16. proxy = True
  17. class ProxyProxyCountry(ProxyCountry):
  18. class Meta:
  19. proxy = True
  20. class ProxyMultiCountry(ProxyCountry):
  21. pass
  22. class ProxyMultiProxyCountry(ProxyMultiCountry):
  23. class Meta:
  24. proxy = True
  25. class Place(models.Model):
  26. name = models.CharField(max_length=100)
  27. class Meta:
  28. abstract = True
  29. class Restaurant(Place):
  30. pass
  31. class Pizzeria(Restaurant):
  32. pass
  33. class State(models.Model):
  34. two_letter_code = models.CharField(max_length=2, primary_key=True)
  35. class TwoFields(models.Model):
  36. f1 = models.IntegerField(unique=True)
  37. f2 = models.IntegerField(unique=True)
  38. class NoFields(models.Model):
  39. pass
  40. class NullableFields(models.Model):
  41. # Fields in db.backends.oracle.BulkInsertMapper
  42. big_int_filed = models.BigIntegerField(null=True, default=1)
  43. binary_field = models.BinaryField(null=True, default=b'data')
  44. date_field = models.DateField(null=True, default=timezone.now)
  45. datetime_field = models.DateTimeField(null=True, default=timezone.now)
  46. decimal_field = models.DecimalField(null=True, max_digits=2, decimal_places=1, default=Decimal('1.1'))
  47. duration_field = models.DurationField(null=True, default=datetime.timedelta(1))
  48. float_field = models.FloatField(null=True, default=3.2)
  49. integer_field = models.IntegerField(null=True, default=2)
  50. null_boolean_field = models.BooleanField(null=True, default=False)
  51. null_boolean_field_old = models.NullBooleanField(null=True, default=False)
  52. positive_big_integer_field = models.PositiveBigIntegerField(null=True, default=2 ** 63 - 1)
  53. positive_integer_field = models.PositiveIntegerField(null=True, default=3)
  54. positive_small_integer_field = models.PositiveSmallIntegerField(null=True, default=4)
  55. small_integer_field = models.SmallIntegerField(null=True, default=5)
  56. time_field = models.TimeField(null=True, default=timezone.now)
  57. # Fields not required in BulkInsertMapper
  58. char_field = models.CharField(null=True, max_length=4, default='char')
  59. email_field = models.EmailField(null=True, default='user@example.com')
  60. file_field = models.FileField(null=True, default='file.txt')
  61. file_path_field = models.FilePathField(path='/tmp', null=True, default='file.txt')
  62. generic_ip_address_field = models.GenericIPAddressField(null=True, default='127.0.0.1')
  63. if Image:
  64. image_field = models.ImageField(null=True, default='image.jpg')
  65. slug_field = models.SlugField(null=True, default='slug')
  66. text_field = models.TextField(null=True, default='text')
  67. url_field = models.URLField(null=True, default='/')
  68. uuid_field = models.UUIDField(null=True, default=uuid.uuid4)