summaryrefslogtreecommitdiff
path: root/parts/django/tests/modeltests/one_to_one/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'parts/django/tests/modeltests/one_to_one/models.py')
-rw-r--r--parts/django/tests/modeltests/one_to_one/models.py47
1 files changed, 47 insertions, 0 deletions
diff --git a/parts/django/tests/modeltests/one_to_one/models.py b/parts/django/tests/modeltests/one_to_one/models.py
new file mode 100644
index 0000000..f263735
--- /dev/null
+++ b/parts/django/tests/modeltests/one_to_one/models.py
@@ -0,0 +1,47 @@
+"""
+10. One-to-one relationships
+
+To define a one-to-one relationship, use ``OneToOneField()``.
+
+In this example, a ``Place`` optionally can be a ``Restaurant``.
+"""
+
+from django.db import models, transaction, IntegrityError
+
+class Place(models.Model):
+ name = models.CharField(max_length=50)
+ address = models.CharField(max_length=80)
+
+ def __unicode__(self):
+ return u"%s the place" % self.name
+
+class Restaurant(models.Model):
+ place = models.OneToOneField(Place, primary_key=True)
+ serves_hot_dogs = models.BooleanField()
+ serves_pizza = models.BooleanField()
+
+ def __unicode__(self):
+ return u"%s the restaurant" % self.place.name
+
+class Waiter(models.Model):
+ restaurant = models.ForeignKey(Restaurant)
+ name = models.CharField(max_length=50)
+
+ def __unicode__(self):
+ return u"%s the waiter at %s" % (self.name, self.restaurant)
+
+class ManualPrimaryKey(models.Model):
+ primary_key = models.CharField(max_length=10, primary_key=True)
+ name = models.CharField(max_length = 50)
+
+class RelatedModel(models.Model):
+ link = models.OneToOneField(ManualPrimaryKey)
+ name = models.CharField(max_length = 50)
+
+class MultiModel(models.Model):
+ link1 = models.OneToOneField(Place)
+ link2 = models.OneToOneField(ManualPrimaryKey)
+ name = models.CharField(max_length=50)
+
+ def __unicode__(self):
+ return u"Multimodel %s" % self.name