1
0
mirror of https://github.com/django/django.git synced 2025-10-24 22:26:08 +00:00

[1.0.X] Fixed #9587. Formset.is_valid() now returns True if an invalid form is marked for deletion. Backport of r10206 from trunk.

git-svn-id: http://code.djangoproject.com/svn/django/branches/releases/1.0.X@10219 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
Joseph Kocherhans
2009-03-30 22:03:20 +00:00
parent 3543e128df
commit f7e52d449a
2 changed files with 46 additions and 5 deletions

View File

@@ -241,7 +241,7 @@ data.
# FormSets with deletion ######################################################
We can easily add deletion ability to a FormSet with an agrument to
We can easily add deletion ability to a FormSet with an argument to
formset_factory. This will add a boolean field to each form instance. When
that boolean field is True, the form will be in formset.deleted_forms
@@ -286,6 +286,34 @@ True
>>> [form.cleaned_data for form in formset.deleted_forms]
[{'votes': 900, 'DELETE': True, 'choice': u'Fergie'}]
If we fill a form with something and then we check the can_delete checkbox for
that form, that form's errors should not make the entire formset invalid since
it's going to be deleted.
>>> class CheckForm(Form):
... field = IntegerField(min_value=100)
>>> data = {
... 'check-TOTAL_FORMS': '3', # the number of forms rendered
... 'check-INITIAL_FORMS': '2', # the number of forms with initial data
... 'check-0-field': '200',
... 'check-0-DELETE': '',
... 'check-1-field': '50',
... 'check-1-DELETE': 'on',
... 'check-2-field': '',
... 'check-2-DELETE': '',
... }
>>> CheckFormSet = formset_factory(CheckForm, can_delete=True)
>>> formset = CheckFormSet(data, prefix='check')
>>> formset.is_valid()
True
If we remove the deletion flag now we will have our validation back.
>>> data['check-1-DELETE'] = ''
>>> formset = CheckFormSet(data, prefix='check')
>>> formset.is_valid()
False
# FormSets with ordering ######################################################