--- __init__.py	(revision 3393)
+++ __init__.py	(revision 3414)
@@ -1174,14 +1174,24 @@
 def method_get_related(method_name, rel_mod, rel_field, self, **kwargs):
     if self._meta.has_related_links and rel_mod.Klass._meta.module_name == 'relatedlinks':
         kwargs['object_id__exact'] = getattr(self, rel_field.rel.field_name)
     else:
         kwargs['%s__%s__exact' % (rel_field.name, rel_field.rel.to.pk.name)] = getattr(self, rel_field.rel.get_related_field().attname)
     kwargs.update(rel_field.rel.lookup_overrides)
-    return getattr(rel_mod, method_name)(**kwargs)
-
+    ### Tabblo change
+    related = getattr(rel_mod, method_name)(**kwargs)
+    # Pre-cache the self object, for following links back.
+    if isinstance(related, list):
+        cache_name = rel_field.get_cache_name()
+        for obj in related:
+            setattr(obj, cache_name, self)
+    elif hasattr(related, 'get_%s' % rel_field.name):
+        setattr(related, rel_field.get_cache_name(), self)
+    return related
+    ### End Tabblo change
+
 # Handles adding related objects.
 # Example: Poll.add_choice()
 def method_add_related(rel_obj, rel_mod, rel_field, self, *args, **kwargs):
     init_kwargs = dict(zip([f.attname for f in rel_obj.fields if f != rel_field and not isinstance(f, AutoField)], args))
     init_kwargs.update(kwargs)
     for f in rel_obj.fields:
