From 9512c921178f7d4512a14f5c0443d97ff05dec24 Mon Sep 17 00:00:00 2001 From: Mikhail Podgurskiy Date: Fri, 1 Jul 2016 15:15:31 +0600 Subject: [PATCH] Fix iteration over form fields, Close #15 --- django_superform/forms.py | 6 ++++++ tests/test_boundfield.py | 6 ++++++ 2 files changed, 12 insertions(+) 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']