Browse Source

Fixed #17927 -- Added initial values support for BaseGenericInlineFormSet

Thanks Fak3 for the suggestion.
Bojan Mihelac 12 years ago
parent
commit
b00c6371af
2 changed files with 19 additions and 2 deletions
  1. 3 2
      django/contrib/contenttypes/generic.py
  2. 16 0
      tests/generic_relations/tests.py

+ 3 - 2
django/contrib/contenttypes/generic.py

@@ -384,7 +384,7 @@ class BaseGenericInlineFormSet(BaseModelFormSet):
     """
 
     def __init__(self, data=None, files=None, instance=None, save_as_new=None,
-                 prefix=None, queryset=None):
+                 prefix=None, queryset=None, **kwargs):
         opts = self.model._meta
         self.instance = instance
         self.rel_name = '-'.join((
@@ -403,7 +403,8 @@ class BaseGenericInlineFormSet(BaseModelFormSet):
             })
         super(BaseGenericInlineFormSet, self).__init__(
             queryset=qs, data=data, files=files,
-            prefix=prefix
+            prefix=prefix,
+            **kwargs
         )
 
     @classmethod

+ 16 - 0
tests/generic_relations/tests.py

@@ -247,6 +247,22 @@ class GenericRelationsTests(TestCase):
         TaggedItem.objects.create(content_object=granite, tag="countertop")
         self.assertEqual(Rock.objects.filter(tags__tag="countertop").count(), 1)
 
+    def test_generic_inline_formsets_initial(self):
+        """
+        Test for #17927 Initial values support for BaseGenericInlineFormSet.
+        """
+        quartz = Mineral.objects.create(name="Quartz", hardness=7)
+
+        GenericFormSet = generic_inlineformset_factory(TaggedItem, extra=1)
+        ctype = ContentType.objects.get_for_model(quartz)
+        initial_data = [{
+            'tag': 'lizard',
+            'content_type': ctype.pk,
+            'object_id': quartz.pk,
+        }]
+        formset = GenericFormSet(initial=initial_data)
+        self.assertEqual(formset.forms[0].initial, initial_data[0])
+
 
 class CustomWidget(forms.TextInput):
     pass