mirror of
https://github.com/django/django.git
synced 2025-04-25 09:44:36 +00:00
Fixed #12074 -- Adding .as_p and as_ul methods to FormSet. Thanks arthurdebert and dpn for the patch.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@14250 bcc190cf-cafb-0310-a4f2-bffc1f526a37
This commit is contained in:
parent
59952b6f9a
commit
c5df329996
@ -326,6 +326,16 @@ class BaseFormSet(StrAndUnicode):
|
|||||||
forms = u' '.join([form.as_table() for form in self.forms])
|
forms = u' '.join([form.as_table() for form in self.forms])
|
||||||
return mark_safe(u'\n'.join([unicode(self.management_form), forms]))
|
return mark_safe(u'\n'.join([unicode(self.management_form), forms]))
|
||||||
|
|
||||||
|
def as_p(self):
|
||||||
|
"Returns this formset rendered as HTML <p>s."
|
||||||
|
forms = u' '.join([form.as_p() for form in self.forms])
|
||||||
|
return mark_safe(u'\n'.join([unicode(self.management_form), forms]))
|
||||||
|
|
||||||
|
def as_ul(self):
|
||||||
|
"Returns this formset rendered as HTML <li>s."
|
||||||
|
forms = u' '.join([form.as_ul() for form in self.forms])
|
||||||
|
return mark_safe(u'\n'.join([unicode(self.management_form), forms]))
|
||||||
|
|
||||||
def formset_factory(form, formset=BaseFormSet, extra=1, can_order=False,
|
def formset_factory(form, formset=BaseFormSet, extra=1, can_order=False,
|
||||||
can_delete=False, max_num=None):
|
can_delete=False, max_num=None):
|
||||||
"""Return a FormSet for the given form class."""
|
"""Return a FormSet for the given form class."""
|
||||||
|
@ -1,4 +1,8 @@
|
|||||||
# -*- coding: utf-8 -*-
|
# -*- coding: utf-8 -*-
|
||||||
|
from django.test.testcases import TestCase
|
||||||
|
from django.forms.forms import Form
|
||||||
|
from django.forms.fields import CharField, IntegerField
|
||||||
|
from django.forms.formsets import formset_factory
|
||||||
tests = """
|
tests = """
|
||||||
# Basic FormSet creation and usage ############################################
|
# Basic FormSet creation and usage ############################################
|
||||||
|
|
||||||
@ -722,3 +726,37 @@ False
|
|||||||
<ul class="errorlist"><li>You may only specify a drink once.</li></ul>
|
<ul class="errorlist"><li>You may only specify a drink once.</li></ul>
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
data = {
|
||||||
|
'choices-TOTAL_FORMS': '1', # the number of forms rendered
|
||||||
|
'choices-INITIAL_FORMS': '0', # the number of forms with initial data
|
||||||
|
'choices-MAX_NUM_FORMS': '0', # max number of forms
|
||||||
|
'choices-0-choice': 'Calexico',
|
||||||
|
'choices-0-votes': '100',
|
||||||
|
}
|
||||||
|
|
||||||
|
class Choice(Form):
|
||||||
|
choice = CharField()
|
||||||
|
votes = IntegerField()
|
||||||
|
|
||||||
|
ChoiceFormSet = formset_factory(Choice)
|
||||||
|
|
||||||
|
class FormsetAsFooTests(TestCase):
|
||||||
|
def test_as_table(self):
|
||||||
|
formset = ChoiceFormSet(data, auto_id=False, prefix='choices')
|
||||||
|
self.assertEqual(formset.as_table(),"""<input type="hidden" name="choices-TOTAL_FORMS" value="1" /><input type="hidden" name="choices-INITIAL_FORMS" value="0" /><input type="hidden" name="choices-MAX_NUM_FORMS" value="0" />
|
||||||
|
<tr><th>Choice:</th><td><input type="text" name="choices-0-choice" value="Calexico" /></td></tr>
|
||||||
|
<tr><th>Votes:</th><td><input type="text" name="choices-0-votes" value="100" /></td></tr>""")
|
||||||
|
|
||||||
|
def test_as_p(self):
|
||||||
|
formset = ChoiceFormSet(data, auto_id=False, prefix='choices')
|
||||||
|
self.assertEqual(formset.as_p(),"""<input type="hidden" name="choices-TOTAL_FORMS" value="1" /><input type="hidden" name="choices-INITIAL_FORMS" value="0" /><input type="hidden" name="choices-MAX_NUM_FORMS" value="0" />
|
||||||
|
<p>Choice: <input type="text" name="choices-0-choice" value="Calexico" /></p>
|
||||||
|
<p>Votes: <input type="text" name="choices-0-votes" value="100" /></p>""")
|
||||||
|
|
||||||
|
def test_as_ul(self):
|
||||||
|
formset = ChoiceFormSet(data, auto_id=False, prefix='choices')
|
||||||
|
self.assertEqual(formset.as_ul(),"""<input type="hidden" name="choices-TOTAL_FORMS" value="1" /><input type="hidden" name="choices-INITIAL_FORMS" value="0" /><input type="hidden" name="choices-MAX_NUM_FORMS" value="0" />
|
||||||
|
<li>Choice: <input type="text" name="choices-0-choice" value="Calexico" /></li>
|
||||||
|
<li>Votes: <input type="text" name="choices-0-votes" value="100" /></li>""")
|
||||||
|
|
||||||
|
@ -38,6 +38,8 @@ from widgets import tests as widgets_tests
|
|||||||
from formsets import tests as formset_tests
|
from formsets import tests as formset_tests
|
||||||
from media import media_tests
|
from media import media_tests
|
||||||
|
|
||||||
|
|
||||||
|
from formsets import FormsetAsFooTests
|
||||||
from fields import FieldsTests
|
from fields import FieldsTests
|
||||||
from validators import TestFieldWithValidators
|
from validators import TestFieldWithValidators
|
||||||
from widgets import WidgetTests, ClearableFileInputTests
|
from widgets import WidgetTests, ClearableFileInputTests
|
||||||
|
Loading…
x
Reference in New Issue
Block a user