summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRussell Keith-Magee <russell@keith-magee.com>2008-05-29 12:17:03 +0000
committerRussell Keith-Magee <russell@keith-magee.com>2008-05-29 12:17:03 +0000
commit5837a45bd94ac06c7e2036b89701e579a2fe9faf (patch)
treea74e422b05a094a55b6725162e55546113dfe650
parent812d8d40bd27a65e7bb7d2538576a96070363572 (diff)
Fixed #7173 -- Corrected the caching of objects in reverse OneToOne relationships. Thanks, Travis Terry.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@7561 bcc190cf-cafb-0310-a4f2-bffc1f526a37
-rw-r--r--django/db/models/fields/related.py2
-rw-r--r--tests/regressiontests/one_to_one_regress/models.py16
2 files changed, 17 insertions, 1 deletions
diff --git a/django/db/models/fields/related.py b/django/db/models/fields/related.py
index 58e8b82a7a..e3677c2f55 100644
--- a/django/db/models/fields/related.py
+++ b/django/db/models/fields/related.py
@@ -165,7 +165,7 @@ class SingleRelatedObjectDescriptor(object):
# SingleRelatedObjectDescriptor instance.
def __init__(self, related):
self.related = related
- self.cache_name = '_%s_cache' % related.field.name
+ self.cache_name = '_%s_cache' % related.get_accessor_name()
def __get__(self, instance, instance_type=None):
if instance is None:
diff --git a/tests/regressiontests/one_to_one_regress/models.py b/tests/regressiontests/one_to_one_regress/models.py
index c5ffd3fb3c..c68fdfc780 100644
--- a/tests/regressiontests/one_to_one_regress/models.py
+++ b/tests/regressiontests/one_to_one_regress/models.py
@@ -15,6 +15,13 @@ class Restaurant(models.Model):
def __unicode__(self):
return u"%s the restaurant" % self.place.name
+class Bar(models.Model):
+ place = models.OneToOneField(Place)
+ serves_cocktails = models.BooleanField()
+
+ def __unicode__(self):
+ return u"%s the bar" % self.place.name
+
class Favorites(models.Model):
name = models.CharField(max_length = 50)
restaurants = models.ManyToManyField(Restaurant)
@@ -34,4 +41,13 @@ __test__ = {'API_TESTS':"""
>>> f.restaurants = [r]
>>> f.restaurants.all()
[<Restaurant: Demon Dogs the restaurant>]
+
+# Regression test for #7173: Check that the name of the cache for the
+# reverse object is correct.
+>>> b = Bar(place=p1, serves_cocktails=False)
+>>> b.save()
+>>> p1.restaurant
+<Restaurant: Demon Dogs the restaurant>
+>>> p1.bar
+<Bar: Demon Dogs the bar>
"""}