Index: tests/modeltests/model_forms/models.py
===================================================================
--- tests/modeltests/model_forms/models.py	(revision 7007)
+++ tests/modeltests/model_forms/models.py	(working copy)
@@ -308,6 +308,12 @@
 >>> print f
 <tr><th>Name:</th><td><input type="text" name="name" value="Mike Royko" maxlength="50" /><br />Use both first and last names.</td></tr>
 
+The 'initial' argument to a ModelForm can be a MultiValueDict.
+>>> from django.utils.datastructures import MultiValueDict
+>>> f = CategoryForm(initial=MultiValueDict({'name': ['V1', 'V2']}))
+>>> print f['name']
+<input id="id_name" type="text" name="name" value="V2" maxlength="20" />
+
 >>> art = Article(headline='Test article', slug='test-article', pub_date=datetime.date(1988, 1, 4), writer=w, article='Hello.')
 >>> art.save()
 >>> art.id
Index: django/newforms/models.py
===================================================================
--- django/newforms/models.py	(revision 7007)
+++ django/newforms/models.py	(working copy)
@@ -272,7 +272,11 @@
             object_data = model_to_dict(instance, opts.fields, opts.exclude)
         # if initial was provided, it should override the values from instance
         if initial is not None:
-            object_data.update(initial)
+            if type(initial) == dict:
+                object_data.update(initial)
+            else:
+                for k, v in initial.items():
+                    object_data[k] = v
         BaseForm.__init__(self, data, files, auto_id, prefix, object_data, error_class, label_suffix)
 
     def save(self, commit=True):
