From e557cabf3b6b9c7ab10d6c9f5aa72188fc3cf6fd Mon Sep 17 00:00:00 2001 From: Francesc Pinyol Margalef Date: Thu, 2 Oct 2014 12:21:01 +0200 Subject: [PATCH] allow to overwrite get_inline_instances --- nested_inline/admin.py | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/nested_inline/admin.py b/nested_inline/admin.py index 58f460a..dffe10d 100644 --- a/nested_inline/admin.py +++ b/nested_inline/admin.py @@ -69,7 +69,13 @@ def add_nested_inline_formsets(self, request, inline, formset, depth=0): raise Exception("Maximum nesting depth reached (5)") for form in formset.forms: nested_formsets = [] - for nested_inline in inline.get_inline_instances(request): + + if form.instance.pk: + instance = form.instance + else: + instance = None + + for nested_inline in inline.get_inline_instances(request, instance): InlineFormSet = nested_inline.get_formset(request, form.instance) prefix = "%s-%s" % (form.prefix, InlineFormSet.get_default_prefix()) @@ -95,11 +101,13 @@ def get_media(extra_media): for form in formset.forms: wrapped_nested_formsets = [] - for nested_inline, nested_formset in zip(inline.get_inline_instances(request), form.nested_formsets): - if form.instance.pk: - instance = form.instance - else: - instance = None + + if form.instance.pk: + instance = form.instance + else: + instance = None + + for nested_inline, nested_formset in zip(inline.get_inline_instances(request, instance), form.nested_formsets): fieldsets = list(nested_inline.get_fieldsets(request)) readonly = list(nested_inline.get_readonly_fields(request)) prepopulated = dict(nested_inline.get_prepopulated_fields(request)) @@ -365,7 +373,7 @@ def get_inline_instances(self, request, obj=None): return inline_instances def get_formsets(self, request, obj=None): - for inline in self.get_inline_instances(request): + for inline in self.get_inline_instances(request,obj): yield inline.get_formset(request, obj)