models.py 2.8 KB

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