Fixed #26267 -- Fixed BoundField to reallow slices of subwidgets.
This commit is contained in:
parent
1ff6e37de4
commit
b412681359
|
@ -60,7 +60,7 @@ class BoundField(object):
|
||||||
def __getitem__(self, idx):
|
def __getitem__(self, idx):
|
||||||
# Prevent unnecessary reevaluation when accessing BoundField's attrs
|
# Prevent unnecessary reevaluation when accessing BoundField's attrs
|
||||||
# from templates.
|
# from templates.
|
||||||
if not isinstance(idx, six.integer_types):
|
if not isinstance(idx, six.integer_types + (slice,)):
|
||||||
raise TypeError
|
raise TypeError
|
||||||
return list(self.__iter__())[idx]
|
return list(self.__iter__())[idx]
|
||||||
|
|
||||||
|
|
|
@ -24,3 +24,5 @@ Bugfixes
|
||||||
|
|
||||||
* Reallowed dashes in top-level domain names of URLs checked by
|
* Reallowed dashes in top-level domain names of URLs checked by
|
||||||
``URLValidator`` to fix a regression in Django 1.8 (:ticket:`26204`).
|
``URLValidator`` to fix a regression in Django 1.8 (:ticket:`26204`).
|
||||||
|
|
||||||
|
* Fixed ``BoundField`` to reallow slices of subwidgets (:ticket:`26267`).
|
||||||
|
|
|
@ -40,3 +40,5 @@ Bugfixes
|
||||||
|
|
||||||
* Fixed some crashing deprecation shims in ``SimpleTemplateResponse`` that
|
* Fixed some crashing deprecation shims in ``SimpleTemplateResponse`` that
|
||||||
regressed in Django 1.9 (:ticket:`26253`).
|
regressed in Django 1.9 (:ticket:`26253`).
|
||||||
|
|
||||||
|
* Fixed ``BoundField`` to reallow slices of subwidgets (:ticket:`26267`).
|
||||||
|
|
|
@ -632,6 +632,7 @@ quoteless
|
||||||
Radziej
|
Radziej
|
||||||
rc
|
rc
|
||||||
readded
|
readded
|
||||||
|
reallow
|
||||||
reallowed
|
reallowed
|
||||||
rebase
|
rebase
|
||||||
rebased
|
rebased
|
||||||
|
|
|
@ -661,6 +661,20 @@ class FormsTestCase(SimpleTestCase):
|
||||||
f = BeatleForm(auto_id=False)
|
f = BeatleForm(auto_id=False)
|
||||||
self.assertHTMLEqual('\n'.join(str(bf) for bf in f['name']), '<input type="text" name="name" />')
|
self.assertHTMLEqual('\n'.join(str(bf) for bf in f['name']), '<input type="text" name="name" />')
|
||||||
|
|
||||||
|
def test_boundfield_slice(self):
|
||||||
|
class BeatleForm(Form):
|
||||||
|
name = ChoiceField(
|
||||||
|
choices=[('john', 'John'), ('paul', 'Paul'), ('george', 'George'), ('ringo', 'Ringo')],
|
||||||
|
widget=RadioSelect,
|
||||||
|
)
|
||||||
|
|
||||||
|
f = BeatleForm()
|
||||||
|
bf = f['name']
|
||||||
|
self.assertEqual(
|
||||||
|
[str(item) for item in bf[1:]],
|
||||||
|
[str(bf[1]), str(bf[2]), str(bf[3])],
|
||||||
|
)
|
||||||
|
|
||||||
def test_forms_with_multiple_choice(self):
|
def test_forms_with_multiple_choice(self):
|
||||||
# MultipleChoiceField is a special case, as its data is required to be a list:
|
# MultipleChoiceField is a special case, as its data is required to be a list:
|
||||||
class SongForm(Form):
|
class SongForm(Form):
|
||||||
|
|
Loading…
Reference in New Issue