diff options
| author | Tim Graham <timograham@gmail.com> | 2016-06-18 10:33:37 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2016-06-18 10:33:37 -0400 |
| commit | 26d0023cccd08473b0acc90e6f06bf3e93ebd847 (patch) | |
| tree | f4486661b0e5dda5804945b3bc5e880384acd398 | |
| parent | f7a363ee1d2039824d95f35e54219e09c5af67b0 (diff) | |
Refs #15667 -- Fixed crash when indexing RadioFieldRenderer with ModelChoiceIterator.
Regression in 86573861a95e5a47dc7ff906443117d75b73dca1
| -rw-r--r-- | django/forms/widgets.py | 2 | ||||
| -rw-r--r-- | tests/model_forms/tests.py | 7 |
2 files changed, 8 insertions, 1 deletions
diff --git a/django/forms/widgets.py b/django/forms/widgets.py index ab9794a1e7..604a6a401a 100644 --- a/django/forms/widgets.py +++ b/django/forms/widgets.py @@ -693,7 +693,7 @@ class ChoiceFieldRenderer(object): self.choices = choices def __getitem__(self, idx): - choice = self.choices[idx] # Let the IndexError propagate + choice = list(self.choices)[idx] # Let the IndexError propagate return self.choice_input_class(self.name, self.value, self.attrs.copy(), choice, idx) def __str__(self): diff --git a/tests/model_forms/tests.py b/tests/model_forms/tests.py index 74ea1ad434..fce0656870 100644 --- a/tests/model_forms/tests.py +++ b/tests/model_forms/tests.py @@ -1593,6 +1593,13 @@ class ModelChoiceFieldTests(TestCase): with self.assertNumQueries(1): template.render(Context({'field': field})) + def test_modelchoicefield_index_renderer(self): + field = forms.ModelChoiceField(Category.objects.all(), widget=forms.RadioSelect) + self.assertEqual( + str(field.widget.get_renderer('foo', [])[0]), + '<label><input name="foo" type="radio" value="" /> ---------</label>' + ) + def test_modelchoicefield_iterator(self): """ Iterator defaults to ModelChoiceIterator and can be overridden with |
