Index: django_versions/trunk/tests/modeltests/prefetch_related/tests.py
===================================================================
--- django_versions/trunk/tests/modeltests/prefetch_related/tests.py	(revision 8755)
+++ django_versions/trunk/tests/modeltests/prefetch_related/tests.py	(working copy)
@@ -7,7 +7,7 @@
 
 from .models import (Author, Book, Reader, Qualification, Teacher, Department,
     TaggedItem, Bookmark, AuthorAddress, FavoriteAuthors, AuthorWithAge,
-    BookWithYear, Person, House, Room, Employee)
+    BookWithYear, BookReview, Person, House, Room, Employee)
 
 
 class PrefetchRelatedTests(TestCase):
@@ -327,6 +327,10 @@
         self.authorAddress = AuthorAddress.objects.create(
             author=self.author1, address='SomeStreet 1')
         self.book2.aged_authors.add(self.author2, self.author3)
+	self.br1 = BookReview.objects.create(
+	    book = self.book1, notes = "review book1")
+	self.br2 = BookReview.objects.create(
+	    book = self.book2, notes = "review book2")
 
     def test_foreignkey(self):
         with self.assertNumQueries(2):
@@ -335,6 +339,11 @@
                          for obj in qs]
         self.assertEquals(addresses, [[unicode(self.authorAddress)], [], []])
 
+        with self.assertNumQueries(2):
+            qs = BookReview.objects.prefetch_related('book')
+            reviews = [obj.book.title for obj in qs]
+        self.assertEquals(reviews, ["Poems", "More poems"])
+
     def test_m2m_to_inheriting_model(self):
         qs = AuthorWithAge.objects.prefetch_related('books_with_year')
         with self.assertNumQueries(2):
Index: django_versions/trunk/tests/modeltests/prefetch_related/models.py
===================================================================
--- django_versions/trunk/tests/modeltests/prefetch_related/models.py	(revision 8709)
+++ django_versions/trunk/tests/modeltests/prefetch_related/models.py	(working copy)
@@ -68,6 +68,9 @@
     class Meta:
         ordering = ['id']
 
+class BookReview(models.Model):
+    book = models.ForeignKey(BookWithYear)
+    notes = models.TextField(null=True, blank=True)
 
 ## Models for default manager tests
 
Index: django_versions/trunk/django/db/models/fields/related.py
===================================================================
--- django_versions/trunk/django/db/models/fields/related.py	(revision 8755)
+++ django_versions/trunk/django/db/models/fields/related.py	(working copy)
@@ -339,8 +339,11 @@
             params = {'%s__pk__in' % self.field.rel.field_name: vals}
         else:
             params = {'%s__in' % self.field.rel.field_name: vals}
+        field_attr = self.field.rel.field_name
+        if other_field.rel and other_field.rel.parent_link:
+            field_attr += '_id'
         return (self.get_query_set(instance=instances[0]).filter(**params),
-                attrgetter(self.field.rel.field_name),
+                attrgetter(field_attr),
                 attrgetter(self.field.attname),
                 True,
                 self.cache_name)
@@ -360,9 +363,15 @@
                     params = {'%s__pk' % self.field.rel.field_name: val}
                 else:
                     params = {'%s__exact' % self.field.rel.field_name: val}
-                qs = self.get_query_set(instance=instance)
-                # Assuming the database enforces foreign keys, this won't fail.
-                rel_obj = qs.get(**params)
+                # One2one fields with multi table inheritance
+                # are fetched using implicit select_related
+                # instance is equal to rel_obj in this case
+                if self.field.rel.parent_link:
+                    rel_obj = instance
+                else:
+                    qs = self.get_query_set(instance=instance)
+                    # Assuming the database enforces foreign keys, this won't fail.
+                    rel_obj = qs.get(**params)
                 if not self.field.rel.multiple:
                     setattr(rel_obj, self.field.related.get_cache_name(), instance)
             setattr(instance, self.cache_name, rel_obj)
