[1.8.x] Fixed #26267 -- Fixed BoundField to reallow slices of subwidgets.
Backport of b412681359
from master
This commit is contained in:
parent
751e5fcaf7
commit
6c48edae76
|
@ -554,7 +554,7 @@ class BoundField(object):
|
|||
def __getitem__(self, idx):
|
||||
# Prevent unnecessary reevaluation when accessing BoundField's attrs
|
||||
# from templates.
|
||||
if not isinstance(idx, six.integer_types):
|
||||
if not isinstance(idx, six.integer_types + (slice,)):
|
||||
raise TypeError
|
||||
return list(self.__iter__())[idx]
|
||||
|
||||
|
|
|
@ -24,3 +24,5 @@ Bugfixes
|
|||
|
||||
* Reallowed dashes in top-level domain names of URLs checked by
|
||||
``URLValidator`` to fix a regression in Django 1.8 (:ticket:`26204`).
|
||||
|
||||
* Fixed ``BoundField`` to reallow slices of subwidgets (:ticket:`26267`).
|
||||
|
|
|
@ -512,6 +512,7 @@ quoteless
|
|||
Radziej
|
||||
rc
|
||||
readded
|
||||
reallow
|
||||
reallowed
|
||||
rebase
|
||||
rebased
|
||||
|
|
|
@ -468,6 +468,20 @@ class FormsTestCase(TestCase):
|
|||
f = BeatleForm(auto_id=False)
|
||||
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):
|
||||
# MultipleChoiceField is a special case, as its data is required to be a list:
|
||||
class SongForm(Form):
|
||||
|
|
Loading…
Reference in New Issue