 Index: django/db/models/manager.py
 ===================================================================
---- django/db/models/manager.py	(revision 13362)
+--- django/db/models/manager.py	(revision 13444)
 +++ django/db/models/manager.py	(working copy)
 @@ -48,6 +48,9 @@
          super(Manager, self).__init__()

+        manager.related_model_instance = instance
+        manager.related_model_attname = self.field.attname
         return manager

     def __set__(self, instance, value):

+        self.related_model_instance = None
+        self.related_model_attname = None
         self._inherited = False
 
     def contribute_to_class(self, model, name):
Index: django/db/models/fields/related.py
===================================================================
--- django/db/models/fields/related.py	(revision 13444)
+++ django/db/models/fields/related.py	(working copy)
@@ -1,3 +1,5 @@
+import copy
+
 from django.db import connection, transaction
 from django.db.backends import util
 from django.db.models import signals, get_model
@@ -250,7 +252,10 @@
 
             # If the related manager indicates that it should be used for
             # related fields, respect that.
-            rel_mgr = self.field.rel.to._default_manager
+            rel_mgr = copy.copy(self.field.rel.to._default_manager)
+            rel_mgr.model_attname = self.field.rel.related_name
+            rel_mgr.related_model_instance = instance
+            rel_mgr.related_model_attname = self.field.name
             if getattr(rel_mgr, 'use_for_related_fields', False):
                 rel_obj = rel_mgr.get(**params)
             else:
@@ -398,7 +403,9 @@
         manager.core_filters = {'%s__%s' % (rel_field.name, attname):
                 getattr(instance, attname)}
         manager.model = self.related.model
