models.py 2.52 KB
Newer Older
1
from django.db import models
2
from django.utils.encoding import python_2_unicode_compatible
3

Jason Myers's avatar
Jason Myers committed
4

5
class Event(models.Model):
6 7
    # Oracle can have problems with a column named "date"
    date = models.DateField(db_column="event_date")
8

Jason Myers's avatar
Jason Myers committed
9

10 11 12
class Parent(models.Model):
    name = models.CharField(max_length=128)

Jason Myers's avatar
Jason Myers committed
13

14
class Child(models.Model):
15 16
    parent = models.ForeignKey(Parent, editable=False, null=True)
    name = models.CharField(max_length=30, blank=True)
17
    age = models.IntegerField(null=True, blank=True)
18

Jason Myers's avatar
Jason Myers committed
19

20 21 22
class Genre(models.Model):
    name = models.CharField(max_length=20)

Jason Myers's avatar
Jason Myers committed
23

24 25 26 27 28
class Band(models.Model):
    name = models.CharField(max_length=20)
    nr_of_members = models.PositiveIntegerField()
    genres = models.ManyToManyField(Genre)

Jason Myers's avatar
Jason Myers committed
29

30
@python_2_unicode_compatible
31 32 33
class Musician(models.Model):
    name = models.CharField(max_length=30)

34
    def __str__(self):
35 36
        return self.name

Jason Myers's avatar
Jason Myers committed
37

38
@python_2_unicode_compatible
39 40 41 42
class Group(models.Model):
    name = models.CharField(max_length=30)
    members = models.ManyToManyField(Musician, through='Membership')

43
    def __str__(self):
44 45
        return self.name

Jason Myers's avatar
Jason Myers committed
46

47 48 49 50 51
class Membership(models.Model):
    music = models.ForeignKey(Musician)
    group = models.ForeignKey(Group)
    role = models.CharField(max_length=15)

Jason Myers's avatar
Jason Myers committed
52

53 54 55
class Quartet(Group):
    pass

Jason Myers's avatar
Jason Myers committed
56

57 58 59
class ChordsMusician(Musician):
    pass

Jason Myers's avatar
Jason Myers committed
60

61 62 63 64
class ChordsBand(models.Model):
    name = models.CharField(max_length=30)
    members = models.ManyToManyField(ChordsMusician, through='Invitation')

Jason Myers's avatar
Jason Myers committed
65

66 67 68 69
class Invitation(models.Model):
    player = models.ForeignKey(ChordsMusician)
    band = models.ForeignKey(ChordsBand)
    instrument = models.CharField(max_length=15)
70

Jason Myers's avatar
Jason Myers committed
71

72 73 74 75 76 77 78
class Swallow(models.Model):
    origin = models.CharField(max_length=255)
    load = models.FloatField()
    speed = models.FloatField()

    class Meta:
        ordering = ('speed', 'load')
79 80 81 82 83 84 85 86 87 88 89


class UnorderedObject(models.Model):
    """
    Model without any defined `Meta.ordering`.
    Refs #17198.
    """
    bool = models.BooleanField(default=True)


class OrderedObjectManager(models.Manager):
90 91
    def get_queryset(self):
        return super(OrderedObjectManager, self).get_queryset().order_by('number')
92

Jason Myers's avatar
Jason Myers committed
93

94 95 96 97 98 99 100
class OrderedObject(models.Model):
    """
    Model with Manager that defines a default order.
    Refs #17198.
    """
    name = models.CharField(max_length=255)
    bool = models.BooleanField(default=True)
101
    number = models.IntegerField(default=0, db_column='number_val')
102

103
    objects = OrderedObjectManager()
104

Jason Myers's avatar
Jason Myers committed
105

106 107
class CustomIdUser(models.Model):
    uuid = models.AutoField(primary_key=True)