Loading django/contrib/contenttypes/generic.py +3 −3 Original line number Diff line number Diff line Loading @@ -465,10 +465,10 @@ class GenericInlineModelAdmin(InlineModelAdmin): formset = BaseGenericInlineFormSet def get_formset(self, request, obj=None, **kwargs): if self.declared_fieldsets: fields = flatten_fieldsets(self.declared_fieldsets) if 'fields' in kwargs: fields = kwargs.pop('fields') else: fields = None fields = flatten_fieldsets(self.get_fieldsets(request, obj)) if self.exclude is None: exclude = [] else: Loading tests/generic_inline_admin/tests.py +20 −0 Original line number Diff line number Diff line Loading @@ -325,3 +325,23 @@ class GenericInlineModelAdminTest(TestCase): self.assertEqual( list(list(ma.get_formsets(request))[0]().forms[0].fields), ['description', 'keywords', 'id', 'DELETE']) def test_get_fieldsets(self): # Test that get_fieldsets is called when figuring out form fields. # Refs #18681. class MediaForm(ModelForm): class Meta: model = Media fields = '__all__' class MediaInline(GenericTabularInline): form = MediaForm model = Media can_delete = False def get_fieldsets(self, request, obj=None): return [(None, {'fields': ['url', 'description']})] ma = MediaInline(Media, self.site) form = ma.get_formset(None).form self.assertEqual(form._meta.fields, ['url', 'description']) Loading
django/contrib/contenttypes/generic.py +3 −3 Original line number Diff line number Diff line Loading @@ -465,10 +465,10 @@ class GenericInlineModelAdmin(InlineModelAdmin): formset = BaseGenericInlineFormSet def get_formset(self, request, obj=None, **kwargs): if self.declared_fieldsets: fields = flatten_fieldsets(self.declared_fieldsets) if 'fields' in kwargs: fields = kwargs.pop('fields') else: fields = None fields = flatten_fieldsets(self.get_fieldsets(request, obj)) if self.exclude is None: exclude = [] else: Loading
tests/generic_inline_admin/tests.py +20 −0 Original line number Diff line number Diff line Loading @@ -325,3 +325,23 @@ class GenericInlineModelAdminTest(TestCase): self.assertEqual( list(list(ma.get_formsets(request))[0]().forms[0].fields), ['description', 'keywords', 'id', 'DELETE']) def test_get_fieldsets(self): # Test that get_fieldsets is called when figuring out form fields. # Refs #18681. class MediaForm(ModelForm): class Meta: model = Media fields = '__all__' class MediaInline(GenericTabularInline): form = MediaForm model = Media can_delete = False def get_fieldsets(self, request, obj=None): return [(None, {'fields': ['url', 'description']})] ma = MediaInline(Media, self.site) form = ma.get_formset(None).form self.assertEqual(form._meta.fields, ['url', 'description'])