From 134c44bef0248337d7ad39f2d93262fb4e9e26c8 Mon Sep 17 00:00:00 2001 From: Evan Borgstrom Date: Thu, 13 Mar 2014 16:39:13 -0400 Subject: [PATCH 1/2] Prevent infinite recursion in Django 1.6 --- polymorphic/admin.py | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/polymorphic/admin.py b/polymorphic/admin.py index db1c8b2..d0c4f48 100644 --- a/polymorphic/admin.py +++ b/polymorphic/admin.py @@ -409,6 +409,11 @@ class PolymorphicChildModelAdmin(admin.ModelAdmin): # Instead, pass the form unchecked here, because the standard ModelForm will just work. # If the derived class sets the model explicitly, respect that setting. kwargs.setdefault('form', self.base_form or self.form) + + # prevent infinite recursion in django 1.6+ + if not self.declared_fieldsets: + kwargs['fields'] = None + return super(PolymorphicChildModelAdmin, self).get_form(request, obj, **kwargs) From d93add71fb1ecce744e30768e5eeb8a51d5717dd Mon Sep 17 00:00:00 2001 From: Evan Borgstrom Date: Thu, 13 Mar 2014 16:50:25 -0400 Subject: [PATCH 2/2] Be more specific in the condition before setting 'fields' --- polymorphic/admin.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/polymorphic/admin.py b/polymorphic/admin.py index d0c4f48..a41dc14 100644 --- a/polymorphic/admin.py +++ b/polymorphic/admin.py @@ -411,7 +411,7 @@ class PolymorphicChildModelAdmin(admin.ModelAdmin): kwargs.setdefault('form', self.base_form or self.form) # prevent infinite recursion in django 1.6+ - if not self.declared_fieldsets: + if 'fields' not in kwargs and not self.declared_fieldsets: kwargs['fields'] = None return super(PolymorphicChildModelAdmin, self).get_form(request, obj, **kwargs)