Author: kmtracey
Date: 2011-09-09 17:05:48 -0700 (Fri, 09 Sep 2011)
New Revision: 16756

Modified:
   django/trunk/django/forms/formsets.py
   django/trunk/tests/regressiontests/forms/tests/formsets.py
Log:
Fixed #15722: ensure formsets evaluate to True even if they have no forms. 
Thanks mlavin.


Modified: django/trunk/django/forms/formsets.py
===================================================================
--- django/trunk/django/forms/formsets.py       2011-09-09 23:27:31 UTC (rev 
16755)
+++ django/trunk/django/forms/formsets.py       2011-09-10 00:05:48 UTC (rev 
16756)
@@ -60,6 +60,10 @@
     def __len__(self):
         return len(self.forms)
 
+    def __nonzero__(self):
+        """All formsets have a management form which is not included in the 
length"""
+        return True
+
     def _management_form(self):
         """Returns the ManagementForm instance for this FormSet."""
         if self.is_bound:

Modified: django/trunk/tests/regressiontests/forms/tests/formsets.py
===================================================================
--- django/trunk/tests/regressiontests/forms/tests/formsets.py  2011-09-09 
23:27:31 UTC (rev 16755)
+++ django/trunk/tests/regressiontests/forms/tests/formsets.py  2011-09-10 
00:05:48 UTC (rev 16756)
@@ -805,6 +805,17 @@
         self.assertEqual(str(reverse_formset[1]), str(forms[-2]))
         self.assertEqual(len(reverse_formset), len(forms))
 
+    def test_formset_nonzero(self):
+        """
+        Formsets with no forms should still evaluate as true.
+        Regression test for #15722
+        """
+        ChoiceFormset = formset_factory(Choice, extra=0)
+        formset = ChoiceFormset()
+        self.assertEqual(len(formset.forms), 0)
+        self.assertTrue(formset)
+
+
 data = {
     'choices-TOTAL_FORMS': '1', # the number of forms rendered
     'choices-INITIAL_FORMS': '0', # the number of forms with initial data

-- 
You received this message because you are subscribed to the Google Groups 
"Django updates" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/django-updates?hl=en.

Reply via email to