--- __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: