Index: django/newforms/widgets.py
===================================================================
--- django/newforms/widgets.py	(revision 7509)
+++ django/newforms/widgets.py	(working copy)
@@ -10,7 +10,7 @@
 import copy
 from itertools import chain
 
-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
@@ -128,7 +128,7 @@
             for v in value]))
 
     def value_from_datadict(self, data, files, name):
-        if isinstance(data, MultiValueDict):
+        if isinstance(data, MultiValueDict) or isinstance(data, MergeDict):
             return data.getlist(name)
         return data.get(name, None)
 
@@ -263,7 +263,7 @@
         return mark_safe(u'\n'.join(output))
 
     def value_from_datadict(self, data, files, name):
-        if isinstance(data, MultiValueDict):
+        if isinstance(data, MultiValueDict) or isinstance(data, MergeDict):
             return data.getlist(name)
         return data.get(name, None)
 
Index: tests/regressiontests/forms/forms.py
===================================================================
--- tests/regressiontests/forms/forms.py	(revision 7509)
+++ tests/regressiontests/forms/forms.py	(working copy)
@@ -539,8 +539,8 @@
 <li><label><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 conveniently work with this.
 >>> data = {'name': 'Yesterday', 'composers': ['J', 'P']}
 >>> f = SongForm(data)
 >>> f.errors
@@ -555,6 +555,11 @@
 >>> 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):
