--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/parts/django/tests/modeltests/one_to_one/models.py Sat Jan 08 11:20:57 2011 +0530
@@ -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