diff --git a/django_superform/forms.py b/django_superform/forms.py index 0a06463..3243ba8 100644 --- a/django_superform/forms.py +++ b/django_superform/forms.py @@ -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 diff --git a/tests/test_boundfield.py b/tests/test_boundfield.py index 7450ad8..f3f3db0 100644 --- a/tests/test_boundfield.py +++ b/tests/test_boundfield.py @@ -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']