1 | --- __init__.py (revision 3393)
|
---|
2 | +++ __init__.py (revision 3414)
|
---|
3 | @@ -1174,14 +1174,24 @@
|
---|
4 | def method_get_related(method_name, rel_mod, rel_field, self, **kwargs):
|
---|
5 | if self._meta.has_related_links and rel_mod.Klass._meta.module_name == 'relatedlinks':
|
---|
6 | kwargs['object_id__exact'] = getattr(self, rel_field.rel.field_name)
|
---|
7 | else:
|
---|
8 | kwargs['%s__%s__exact' % (rel_field.name, rel_field.rel.to.pk.name)] = getattr(self, rel_field.rel.get_related_field().attname)
|
---|
9 | kwargs.update(rel_field.rel.lookup_overrides)
|
---|
10 | - return getattr(rel_mod, method_name)(**kwargs)
|
---|
11 | -
|
---|
12 | + ### Tabblo change
|
---|
13 | + related = getattr(rel_mod, method_name)(**kwargs)
|
---|
14 | + # Pre-cache the self object, for following links back.
|
---|
15 | + if isinstance(related, list):
|
---|
16 | + cache_name = rel_field.get_cache_name()
|
---|
17 | + for obj in related:
|
---|
18 | + setattr(obj, cache_name, self)
|
---|
19 | + elif hasattr(related, 'get_%s' % rel_field.name):
|
---|
20 | + setattr(related, rel_field.get_cache_name(), self)
|
---|
21 | + return related
|
---|
22 | + ### End Tabblo change
|
---|
23 | +
|
---|
24 | # Handles adding related objects.
|
---|
25 | # Example: Poll.add_choice()
|
---|
26 | def method_add_related(rel_obj, rel_mod, rel_field, self, *args, **kwargs):
|
---|
27 | init_kwargs = dict(zip([f.attname for f in rel_obj.fields if f != rel_field and not isinstance(f, AutoField)], args))
|
---|
28 | init_kwargs.update(kwargs)
|
---|
29 | for f in rel_obj.fields:
|
---|