Index: django/newforms/models.py
===================================================================
--- django/newforms/models.py	(revision 135)
+++ django/newforms/models.py	(working copy)
@@ -66,19 +66,21 @@
         form.save_m2m = save_m2m
     return instance
 
-def make_model_init(form, fields):
+def make_model_init(form, model, fields):
     """Returns the __init__() method for a Form."""
-    def __init__(self, instance=None, **kwargs):
-        if instance:
-            opts = instance.__class__._meta
-            initial = kwargs.setdefault('initial', {})
-            for f in opts.fields:
-                if not f.editable or f.name in initial:
+    def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None,
+                 initial=None):
+        from django.db import models
+        if isinstance(initial, models.Model):
+            instance, initial = initial, {}
+            for f in model._meta.fields:
+                if not f.editable:
                     continue
                 if fields and f.name not in fields:
                     continue
                 initial[f.name] = f.value_from_object(instance)
-        form.__init__(self, **kwargs)
+        form.__init__(self, data=data, files=files, auto_id=auto_id,
+                      prefix=prefix, initial=initial)
     return __init__
 
 def make_model_save(model, fields, fail_message):
@@ -115,7 +117,8 @@
             field_list.append((f.name, formfield))
     base_fields = SortedDictFromList(field_list)
     return type(opts.object_name + 'Form', (form,), 
-        {'base_fields': base_fields, '_model': model, '__init__': make_model_init(form, fields),
+        {'base_fields': base_fields, '_model': model,
+         '__init__': make_model_init(form, model, fields),
          'save': make_model_save(model, fields, 'created')})
 
 def form_for_instance(instance, form=BaseForm, fields=None, formfield_callback=lambda f, **kwargs: f.formfield(**kwargs)):
