mirror of
https://github.com/django/django.git
synced 2024-11-29 14:46:18 +01:00
8d4b1629d4
The bug was reported pre 1.1, and somewhere along the way it has been fixed. So, this is tests only addition.
129 lines
3.2 KiB
Python
129 lines
3.2 KiB
Python
from __future__ import unicode_literals
|
|
|
|
from django.db import models
|
|
from django.utils.encoding import python_2_unicode_compatible
|
|
|
|
|
|
@python_2_unicode_compatible
|
|
class Building(models.Model):
|
|
name = models.CharField(max_length=10)
|
|
|
|
def __str__(self):
|
|
return "Building: %s" % self.name
|
|
|
|
@python_2_unicode_compatible
|
|
class Device(models.Model):
|
|
building = models.ForeignKey('Building')
|
|
name = models.CharField(max_length=10)
|
|
|
|
def __str__(self):
|
|
return "device '%s' in building %s" % (self.name, self.building)
|
|
|
|
@python_2_unicode_compatible
|
|
class Port(models.Model):
|
|
device = models.ForeignKey('Device')
|
|
port_number = models.CharField(max_length=10)
|
|
|
|
def __str__(self):
|
|
return "%s/%s" % (self.device.name, self.port_number)
|
|
|
|
@python_2_unicode_compatible
|
|
class Connection(models.Model):
|
|
start = models.ForeignKey(Port, related_name='connection_start',
|
|
unique=True)
|
|
end = models.ForeignKey(Port, related_name='connection_end', unique=True)
|
|
|
|
def __str__(self):
|
|
return "%s to %s" % (self.start, self.end)
|
|
|
|
# Another non-tree hierarchy that exercises code paths similar to the above
|
|
# example, but in a slightly different configuration.
|
|
class TUser(models.Model):
|
|
name = models.CharField(max_length=200)
|
|
|
|
class Person(models.Model):
|
|
user = models.ForeignKey(TUser, unique=True)
|
|
|
|
class Organizer(models.Model):
|
|
person = models.ForeignKey(Person)
|
|
|
|
class Student(models.Model):
|
|
person = models.ForeignKey(Person)
|
|
|
|
class Class(models.Model):
|
|
org = models.ForeignKey(Organizer)
|
|
|
|
class Enrollment(models.Model):
|
|
std = models.ForeignKey(Student)
|
|
cls = models.ForeignKey(Class)
|
|
|
|
# Models for testing bug #8036.
|
|
class Country(models.Model):
|
|
name = models.CharField(max_length=50)
|
|
|
|
class State(models.Model):
|
|
name = models.CharField(max_length=50)
|
|
country = models.ForeignKey(Country)
|
|
|
|
class ClientStatus(models.Model):
|
|
name = models.CharField(max_length=50)
|
|
|
|
class Client(models.Model):
|
|
name = models.CharField(max_length=50)
|
|
state = models.ForeignKey(State, null=True)
|
|
status = models.ForeignKey(ClientStatus)
|
|
|
|
class SpecialClient(Client):
|
|
value = models.IntegerField()
|
|
|
|
# Some model inheritance exercises
|
|
@python_2_unicode_compatible
|
|
class Parent(models.Model):
|
|
name = models.CharField(max_length=10)
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
class Child(Parent):
|
|
value = models.IntegerField()
|
|
|
|
@python_2_unicode_compatible
|
|
class Item(models.Model):
|
|
name = models.CharField(max_length=10)
|
|
child = models.ForeignKey(Child, null=True)
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
# Models for testing bug #19870.
|
|
@python_2_unicode_compatible
|
|
class Fowl(models.Model):
|
|
name = models.CharField(max_length=10)
|
|
|
|
def __str__(self):
|
|
return self.name
|
|
|
|
class Hen(Fowl):
|
|
pass
|
|
|
|
class Chick(Fowl):
|
|
mother = models.ForeignKey(Hen)
|
|
|
|
class Base(models.Model):
|
|
name = models.CharField(max_length=10)
|
|
lots_of_text = models.TextField()
|
|
|
|
class Meta:
|
|
abstract = True
|
|
|
|
class A(Base):
|
|
a_field = models.CharField(max_length=10)
|
|
|
|
class B(Base):
|
|
b_field = models.CharField(max_length=10)
|
|
|
|
class C(Base):
|
|
c_a = models.ForeignKey(A)
|
|
c_b = models.ForeignKey(B)
|
|
is_published = models.BooleanField()
|