Loading django/forms/widgets.py +24 −24 Original line number Diff line number Diff line Loading @@ -10,7 +10,7 @@ except NameError: import copy from itertools import chain from django.conf import settings from django.utils.datastructures import MultiValueDict from django.utils.datastructures import MultiValueDict, MergeDict from django.utils.html import escape, conditional_escape from django.utils.translation import ugettext from django.utils.encoding import StrAndUnicode, force_unicode Loading Loading @@ -250,7 +250,7 @@ class MultipleHiddenInput(HiddenInput): for v in value])) def value_from_datadict(self, data, files, name): if isinstance(data, MultiValueDict): if isinstance(data, (MultiValueDict, MergeDict)): return data.getlist(name) return data.get(name, None) Loading Loading @@ -417,7 +417,7 @@ class SelectMultiple(Select): return mark_safe(u'\n'.join(output)) def value_from_datadict(self, data, files, name): if isinstance(data, MultiValueDict): if isinstance(data, (MultiValueDict, MergeDict)): return data.getlist(name) return data.get(name, None) Loading tests/regressiontests/forms/forms.py +8 −2 Original line number Diff line number Diff line Loading @@ -540,8 +540,9 @@ zero-based index. <li><label for="composers_id_1"><input type="checkbox" name="composers" value="P" id="composers_id_1" /> Paul McCartney</label></li> </ul> Data for a MultipleChoiceField should be a list. QueryDict and MultiValueDict conveniently work with this. Data for a MultipleChoiceField should be a list. QueryDict, MultiValueDict and MergeDict (when created as a merge of MultiValueDicts) conveniently work with this. >>> data = {'name': 'Yesterday', 'composers': ['J', 'P']} >>> f = SongForm(data) >>> f.errors Loading @@ -556,6 +557,11 @@ conveniently work with this. >>> f = SongForm(data) >>> f.errors {} >>> from django.utils.datastructures import MergeDict >>> data = MergeDict(MultiValueDict(dict(name=['Yesterday'], composers=['J', 'P']))) >>> f = SongForm(data) >>> f.errors {} The MultipleHiddenInput widget renders multiple values as hidden fields. >>> class SongFormHidden(Form): Loading Loading
django/forms/widgets.py +24 −24 Original line number Diff line number Diff line Loading @@ -10,7 +10,7 @@ except NameError: import copy from itertools import chain from django.conf import settings from django.utils.datastructures import MultiValueDict from django.utils.datastructures import MultiValueDict, MergeDict from django.utils.html import escape, conditional_escape from django.utils.translation import ugettext from django.utils.encoding import StrAndUnicode, force_unicode Loading Loading @@ -250,7 +250,7 @@ class MultipleHiddenInput(HiddenInput): for v in value])) def value_from_datadict(self, data, files, name): if isinstance(data, MultiValueDict): if isinstance(data, (MultiValueDict, MergeDict)): return data.getlist(name) return data.get(name, None) Loading Loading @@ -417,7 +417,7 @@ class SelectMultiple(Select): return mark_safe(u'\n'.join(output)) def value_from_datadict(self, data, files, name): if isinstance(data, MultiValueDict): if isinstance(data, (MultiValueDict, MergeDict)): return data.getlist(name) return data.get(name, None) Loading
tests/regressiontests/forms/forms.py +8 −2 Original line number Diff line number Diff line Loading @@ -540,8 +540,9 @@ zero-based index. <li><label for="composers_id_1"><input type="checkbox" name="composers" value="P" id="composers_id_1" /> Paul McCartney</label></li> </ul> Data for a MultipleChoiceField should be a list. QueryDict and MultiValueDict conveniently work with this. Data for a MultipleChoiceField should be a list. QueryDict, MultiValueDict and MergeDict (when created as a merge of MultiValueDicts) conveniently work with this. >>> data = {'name': 'Yesterday', 'composers': ['J', 'P']} >>> f = SongForm(data) >>> f.errors Loading @@ -556,6 +557,11 @@ conveniently work with this. >>> f = SongForm(data) >>> f.errors {} >>> from django.utils.datastructures import MergeDict >>> data = MergeDict(MultiValueDict(dict(name=['Yesterday'], composers=['J', 'P']))) >>> f = SongForm(data) >>> f.errors {} The MultipleHiddenInput widget renders multiple values as hidden fields. >>> class SongFormHidden(Form): Loading