models.py 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140
  1. import uuid
  2. from django.contrib.auth.models import User
  3. from django.db import models
  4. class Event(models.Model):
  5. # Oracle can have problems with a column named "date"
  6. date = models.DateField(db_column="event_date")
  7. class Parent(models.Model):
  8. name = models.CharField(max_length=128)
  9. class Child(models.Model):
  10. parent = models.ForeignKey(Parent, models.SET_NULL, editable=False, null=True)
  11. name = models.CharField(max_length=30, blank=True)
  12. age = models.IntegerField(null=True, blank=True)
  13. class GrandChild(models.Model):
  14. parent = models.ForeignKey(Child, models.SET_NULL, editable=False, null=True)
  15. name = models.CharField(max_length=30, blank=True)
  16. def __str__(self):
  17. return self.name
  18. def __html__(self):
  19. return f'<h2 class="main">{self.name}</h2>'
  20. class Genre(models.Model):
  21. name = models.CharField(max_length=20)
  22. class Band(models.Model):
  23. name = models.CharField(max_length=20)
  24. nr_of_members = models.PositiveIntegerField()
  25. genres = models.ManyToManyField(Genre)
  26. class Musician(models.Model):
  27. name = models.CharField(max_length=30)
  28. age = models.IntegerField(null=True, blank=True)
  29. def __str__(self):
  30. return self.name
  31. class Group(models.Model):
  32. name = models.CharField(max_length=30)
  33. members = models.ManyToManyField(Musician, through="Membership")
  34. def __str__(self):
  35. return self.name
  36. class Concert(models.Model):
  37. name = models.CharField(max_length=30)
  38. group = models.ForeignKey(Group, models.CASCADE)
  39. class Membership(models.Model):
  40. music = models.ForeignKey(Musician, models.CASCADE)
  41. group = models.ForeignKey(Group, models.CASCADE)
  42. role = models.CharField(max_length=15)
  43. class Quartet(Group):
  44. pass
  45. class ChordsMusician(Musician):
  46. pass
  47. class ChordsBand(models.Model):
  48. name = models.CharField(max_length=30)
  49. members = models.ManyToManyField(ChordsMusician, through="Invitation")
  50. class Invitation(models.Model):
  51. player = models.ForeignKey(ChordsMusician, models.CASCADE)
  52. band = models.ForeignKey(ChordsBand, models.CASCADE)
  53. instrument = models.CharField(max_length=15)
  54. class Swallow(models.Model):
  55. uuid = models.UUIDField(primary_key=True, default=uuid.uuid4)
  56. origin = models.CharField(max_length=255)
  57. load = models.FloatField()
  58. speed = models.FloatField()
  59. class Meta:
  60. ordering = ("speed", "load")
  61. class SwallowOneToOne(models.Model):
  62. swallow = models.OneToOneField(Swallow, models.CASCADE)
  63. class UnorderedObject(models.Model):
  64. """
  65. Model without any defined `Meta.ordering`.
  66. Refs #17198.
  67. """
  68. bool = models.BooleanField(default=True)
  69. class OrderedObjectManager(models.Manager):
  70. def get_queryset(self):
  71. return super().get_queryset().order_by("number")
  72. class OrderedObject(models.Model):
  73. """
  74. Model with Manager that defines a default order.
  75. Refs #17198.
  76. """
  77. name = models.CharField(max_length=255)
  78. bool = models.BooleanField(default=True)
  79. number = models.IntegerField(default=0, db_column="number_val")
  80. objects = OrderedObjectManager()
  81. class CustomIdUser(models.Model):
  82. uuid = models.AutoField(primary_key=True)
  83. class CharPK(models.Model):
  84. char_pk = models.CharField(max_length=100, primary_key=True)
  85. class ProxyUser(User):
  86. class Meta:
  87. proxy = True