Commit a0ed2f92 authored by Loic Bistuer's avatar Loic Bistuer Committed by Tim Graham
Browse files

Fixed #18681 -- GenericInlineModelAdmin.get_formset() no longer bypasses get_fieldsets().

Refs 23e1b59c which already fixed this issue for ModelAdmin and InlineModelAdmin.
parent 920b242e
Loading
Loading
Loading
Loading
+3 −3
Original line number Diff line number Diff line
@@ -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:
+20 −0
Original line number Diff line number Diff line
@@ -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'])