Skip to content

Commit

Permalink
Fix iteration over form fields, Close jazzband#15
Browse files Browse the repository at this point in the history
  • Loading branch information
kmmbvnr committed Jul 1, 2016
1 parent ecb1501 commit 9512c92
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 0 deletions.
6 changes: 6 additions & 0 deletions django_superform/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -176,6 +176,12 @@ def __init__(self, *args, **kwargs):
super(SuperFormMixin, self).__init__(*args, **kwargs)
self._init_composite_fields()

def __iter__(self):
for name in self.fields:
yield self[name]
for name in self.composite_fields:
yield self[name]

def __getitem__(self, name):
"""
Returns a ``django.forms.BoundField`` for the given field name. It also
Expand Down
6 changes: 6 additions & 0 deletions tests/test_boundfield.py
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,12 @@ def test_it_is_nonzero_for_forms(self):
self.assertTrue(isinstance(bf, CompositeBoundField))
self.assertEqual(bool(bf), True)

def test_it_iterates_over_own_field(self):
form = AccountForm()
fields = [field.name for field in form]
self.assertEqual(
fields, ['username', 'emails', 'multiple_names', 'nested_form'])

def test_it_iterates_over_form_fields(self):
form = AccountForm()
composite_bf = form['nested_form']
Expand Down

0 comments on commit 9512c92

Please sign in to comment.