summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorLoic Bistuer <loic.bistuer@sixmedia.com>2014-01-22 00:25:33 +0700
committerTim Graham <timograham@gmail.com>2014-01-22 09:13:15 -0500
commitc3fdeb28fff35573bf86ef04b234c7f5817b0dea (patch)
treea68e305a73ef573585f3327b927f498f01ae7f02 /django
parenta5ec11c4bbb8f82e02871f154b3cfe0008b00a2b (diff)
Fixed #21846 -- Made NestedObjects handle related_name with %(app_label)s or %(class)s.
Diffstat (limited to 'django')
-rw-r--r--django/contrib/admin/utils.py8
1 files changed, 6 insertions, 2 deletions
diff --git a/django/contrib/admin/utils.py b/django/contrib/admin/utils.py
index 4092b67c0e..0b74a6e75f 100644
--- a/django/contrib/admin/utils.py
+++ b/django/contrib/admin/utils.py
@@ -156,10 +156,14 @@ class NestedObjects(Collector):
def add_edge(self, source, target):
self.edges.setdefault(source, []).append(target)
- def collect(self, objs, source_attr=None, **kwargs):
+ def collect(self, objs, source=None, source_attr=None, **kwargs):
for obj in objs:
if source_attr:
- self.add_edge(getattr(obj, source_attr), obj)
+ related_name = source_attr % {
+ 'class': source._meta.model_name,
+ 'app_label': source._meta.app_label,
+ }
+ self.add_edge(getattr(obj, related_name), obj)
else:
self.add_edge(None, obj)
try: