Skip to content

Commit

Permalink
Fixed #9588 -- Allow passing kwargs to `GenericInlineModelAdmin.get_f…
Browse files Browse the repository at this point in the history
…ormset` just like the InlineModelAdmin. Thanks, prestontimmons.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@16419 bcc190cf-cafb-0310-a4f2-bffc1f526a37
  • Loading branch information
jezdez committed Jun 16, 2011
1 parent 97f22f2 commit 30e8426
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 3 deletions.
3 changes: 2 additions & 1 deletion django/contrib/contenttypes/generic.py
Expand Up @@ -396,7 +396,7 @@ class GenericInlineModelAdmin(InlineModelAdmin):
ct_fk_field = "object_id"
formset = BaseGenericInlineFormSet

def get_formset(self, request, obj=None):
def get_formset(self, request, obj=None, **kwargs):
if self.declared_fieldsets:
fields = flatten_fieldsets(self.declared_fieldsets)
else:
Expand All @@ -420,6 +420,7 @@ def get_formset(self, request, obj=None):
"max_num": self.max_num,
"exclude": exclude
}
defaults.update(kwargs)
return generic_inlineformset_factory(self.model, **defaults)

class GenericStackedInline(GenericInlineModelAdmin):
Expand Down
20 changes: 18 additions & 2 deletions tests/regressiontests/generic_inline_admin/tests.py
@@ -1,12 +1,13 @@
# coding: utf-8

from django.conf import settings
from django.contrib.admin.sites import AdminSite
from django.contrib.contenttypes.generic import generic_inlineformset_factory
from django.test import TestCase

# local test models
from models import Episode, EpisodeExtra, EpisodeMaxNum, EpisodeExclude, \
Media, EpisodePermanent, MediaPermanentInline, Category
from models import (Episode, EpisodeExtra, EpisodeMaxNum, EpisodeExclude,
Media, MediaInline, EpisodePermanent, MediaPermanentInline, Category)


class GenericAdminViewTest(TestCase):
Expand Down Expand Up @@ -214,3 +215,18 @@ def test_no_deletion(self):
fake_request = object()
formset = inline.get_formset(fake_request)
self.assertFalse(formset.can_delete)

class GenericInlineModelAdminTest(TestCase):

def test_get_formset_kwargs(self):
media_inline = MediaInline(Media, AdminSite())

# Create a formset with default arguments
formset = media_inline.get_formset(None)
self.assertEqual(formset.max_num, None)
self.assertEqual(formset.can_order, False)

# Create a formset with custom keyword arguments
formset = media_inline.get_formset(None, max_num=100, can_order=True)
self.assertEqual(formset.max_num, 100)
self.assertEqual(formset.can_order, True)

0 comments on commit 30e8426

Please sign in to comment.