diff -r 5ff1fc726848 -r c6bca38c1cbf parts/django/tests/modeltests/one_to_one/models.py --- /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