From 125403ca972d4964691ee206acc6c28c0b3eab9d Mon Sep 17 00:00:00 2001 From: Karen Tracey Date: Sun, 13 Dec 2009 17:46:52 +0000 Subject: [PATCH] Fixed #12215: Added len to ModelChoiceIterator. Thanks Alex and Tobias. git-svn-id: http://code.djangoproject.com/svn/django/trunk@11850 bcc190cf-cafb-0310-a4f2-bffc1f526a37 --- django/forms/models.py | 3 +++ tests/regressiontests/model_forms_regress/tests.py | 14 +++++++++++++- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/django/forms/models.py b/django/forms/models.py index 61ff8e4dcc..3f7621e5e7 100644 --- a/django/forms/models.py +++ b/django/forms/models.py @@ -910,6 +910,9 @@ class ModelChoiceIterator(object): for obj in self.queryset.all(): yield self.choice(obj) + def __len__(self): + return len(self.queryset) + def choice(self, obj): if self.field.to_field_name: key = obj.serializable_value(self.field.to_field_name) diff --git a/tests/regressiontests/model_forms_regress/tests.py b/tests/regressiontests/model_forms_regress/tests.py index 85e284b639..f8b6511140 100644 --- a/tests/regressiontests/model_forms_regress/tests.py +++ b/tests/regressiontests/model_forms_regress/tests.py @@ -100,4 +100,16 @@ class CustomFieldSaveTests(TestCase): # It's enough that the form saves without error -- the custom save routine will # generate an AssertionError if it is called more than once during save. form = CFFForm(data = {'f': None}) - form.save() \ No newline at end of file + form.save() + +class ModelChoiceIteratorTests(TestCase): + def test_len(self): + class Form(forms.ModelForm): + class Meta: + model = Article + fields = ["publications"] + + Publication.objects.create(title="Pravda", + date_published=date(1991, 8, 22)) + f = Form() + self.assertEqual(len(f.fields["publications"].choices), 1)