parts/django/tests/regressiontests/select_related_regress/models.py
changeset 69 c6bca38c1cbf
equal deleted inserted replaced
68:5ff1fc726848 69:c6bca38c1cbf
       
     1 from django.db import models
       
     2 
       
     3 class Building(models.Model):
       
     4     name = models.CharField(max_length=10)
       
     5 
       
     6     def __unicode__(self):
       
     7         return u"Building: %s" % self.name
       
     8 
       
     9 class Device(models.Model):
       
    10     building = models.ForeignKey('Building')
       
    11     name = models.CharField(max_length=10)
       
    12 
       
    13     def __unicode__(self):
       
    14         return u"device '%s' in building %s" % (self.name, self.building)
       
    15 
       
    16 class Port(models.Model):
       
    17     device = models.ForeignKey('Device')
       
    18     port_number = models.CharField(max_length=10)
       
    19 
       
    20     def __unicode__(self):
       
    21         return u"%s/%s" % (self.device.name, self.port_number)
       
    22 
       
    23 class Connection(models.Model):
       
    24     start = models.ForeignKey(Port, related_name='connection_start',
       
    25             unique=True)
       
    26     end = models.ForeignKey(Port, related_name='connection_end', unique=True)
       
    27 
       
    28     def __unicode__(self):
       
    29         return u"%s to %s" % (self.start, self.end)
       
    30 
       
    31 # Another non-tree hierarchy that exercises code paths similar to the above
       
    32 # example, but in a slightly different configuration.
       
    33 class TUser(models.Model):
       
    34     name = models.CharField(max_length=200)
       
    35 
       
    36 class Person(models.Model):
       
    37     user = models.ForeignKey(TUser, unique=True)
       
    38 
       
    39 class Organizer(models.Model):
       
    40     person = models.ForeignKey(Person)
       
    41 
       
    42 class Student(models.Model):
       
    43     person = models.ForeignKey(Person)
       
    44 
       
    45 class Class(models.Model):
       
    46     org = models.ForeignKey(Organizer)
       
    47 
       
    48 class Enrollment(models.Model):
       
    49     std = models.ForeignKey(Student)
       
    50     cls = models.ForeignKey(Class)
       
    51 
       
    52 # Models for testing bug #8036.
       
    53 class Country(models.Model):
       
    54     name = models.CharField(max_length=50)
       
    55 
       
    56 class State(models.Model):
       
    57     name = models.CharField(max_length=50)
       
    58     country = models.ForeignKey(Country)
       
    59 
       
    60 class ClientStatus(models.Model):
       
    61     name = models.CharField(max_length=50)
       
    62 
       
    63 class Client(models.Model):
       
    64     name = models.CharField(max_length=50)
       
    65     state = models.ForeignKey(State, null=True)
       
    66     status = models.ForeignKey(ClientStatus)
       
    67 
       
    68 class SpecialClient(Client):
       
    69     value = models.IntegerField()
       
    70 
       
    71 # Some model inheritance exercises
       
    72 class Parent(models.Model):
       
    73     name = models.CharField(max_length=10)
       
    74 
       
    75     def __unicode__(self):
       
    76         return self.name
       
    77 
       
    78 class Child(Parent):
       
    79     value = models.IntegerField()
       
    80 
       
    81 class Item(models.Model):
       
    82     name = models.CharField(max_length=10)
       
    83     child = models.ForeignKey(Child, null=True)
       
    84 
       
    85     def __unicode__(self):
       
    86         return self.name