models.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. """
  2. Tests for F() query expression syntax.
  3. """
  4. import uuid
  5. from django.db import models
  6. class Manager(models.Model):
  7. name = models.CharField(max_length=50)
  8. class Employee(models.Model):
  9. firstname = models.CharField(max_length=50)
  10. lastname = models.CharField(max_length=50)
  11. salary = models.IntegerField(blank=True, null=True)
  12. manager = models.ForeignKey(Manager, models.CASCADE, null=True)
  13. def __str__(self):
  14. return '%s %s' % (self.firstname, self.lastname)
  15. class RemoteEmployee(Employee):
  16. adjusted_salary = models.IntegerField()
  17. class Company(models.Model):
  18. name = models.CharField(max_length=100)
  19. num_employees = models.PositiveIntegerField()
  20. num_chairs = models.PositiveIntegerField()
  21. ceo = models.ForeignKey(
  22. Employee,
  23. models.CASCADE,
  24. related_name='company_ceo_set',
  25. )
  26. point_of_contact = models.ForeignKey(
  27. Employee,
  28. models.SET_NULL,
  29. related_name='company_point_of_contact_set',
  30. null=True,
  31. )
  32. based_in_eu = models.BooleanField(default=False)
  33. def __str__(self):
  34. return self.name
  35. class Number(models.Model):
  36. integer = models.BigIntegerField(db_column='the_integer')
  37. float = models.FloatField(null=True, db_column='the_float')
  38. decimal_value = models.DecimalField(max_digits=20, decimal_places=17, null=True)
  39. def __str__(self):
  40. return '%i, %.3f, %.17f' % (self.integer, self.float, self.decimal_value)
  41. class Experiment(models.Model):
  42. name = models.CharField(max_length=24)
  43. assigned = models.DateField()
  44. completed = models.DateField()
  45. estimated_time = models.DurationField()
  46. start = models.DateTimeField()
  47. end = models.DateTimeField()
  48. scalar = models.IntegerField(null=True)
  49. class Meta:
  50. db_table = 'expressions_ExPeRiMeNt'
  51. ordering = ('name',)
  52. def duration(self):
  53. return self.end - self.start
  54. class Result(models.Model):
  55. experiment = models.ForeignKey(Experiment, models.CASCADE)
  56. result_time = models.DateTimeField()
  57. def __str__(self):
  58. return "Result at %s" % self.result_time
  59. class Time(models.Model):
  60. time = models.TimeField(null=True)
  61. def __str__(self):
  62. return str(self.time)
  63. class SimulationRun(models.Model):
  64. start = models.ForeignKey(Time, models.CASCADE, null=True, related_name='+')
  65. end = models.ForeignKey(Time, models.CASCADE, null=True, related_name='+')
  66. midpoint = models.TimeField()
  67. def __str__(self):
  68. return "%s (%s to %s)" % (self.midpoint, self.start, self.end)
  69. class UUIDPK(models.Model):
  70. id = models.UUIDField(primary_key=True, default=uuid.uuid4)
  71. class UUID(models.Model):
  72. uuid = models.UUIDField(null=True)
  73. uuid_fk = models.ForeignKey(UUIDPK, models.CASCADE, null=True)