models.py 2.9 KB

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