Fixed #18681 -- GenericInlineModelAdmin.get_formset() no longer bypasses get_fieldsets().
Refs 23e1b59
which already fixed this issue for ModelAdmin and InlineModelAdmin.
This commit is contained in:
parent
920b242e30
commit
a0ed2f9260
|
@ -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:
|
||||
|
|
|
@ -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…
Reference in New Issue