diff -r df0e563861bd contrib/admin/options.py
--- a/contrib/admin/options.py	Wed Sep 24 15:13:01 2008 -0400
+++ b/contrib/admin/options.py	Thu Feb 19 14:56:48 2009 -0500
@@ -478,7 +478,10 @@
         ModelForm = self.get_form(request)
         formsets = []
         if request.method == 'POST':
-            form = ModelForm(request.POST, request.FILES)
+            if isinstance(ModelForm, ModelFormMetaclass):
+                form = ModelForm(request.POST, request.FILES)
+            else:
+                form = ModelForm
             if form.is_valid():
                 form_validated = True
                 new_object = self.save_form(request, form, change=False)
@@ -509,7 +512,10 @@
                     continue
                 if isinstance(f, models.ManyToManyField):
                     initial[k] = initial[k].split(",")
-            form = ModelForm(initial=initial)
+            if isinstance(ModelForm, ModelFormMetaclass):
+                form = ModelForm(initial=initial)
+            else:
+                form = ModelForm
             for FormSet in self.get_formsets(request):
                 formset = FormSet(instance=self.model())
                 formsets.append(formset)
@@ -564,7 +570,10 @@
         ModelForm = self.get_form(request, obj)
         formsets = []
         if request.method == 'POST':
-            form = ModelForm(request.POST, request.FILES, instance=obj)
+            if isinstance(ModelForm, ModelFormMetaclass):
+                form = ModelForm(request.POST, request.FILES, instance=obj)
+            else:
+                form = ModelForm
             if form.is_valid():
                 form_validated = True
                 new_object = self.save_form(request, form, change=True)
@@ -586,7 +595,10 @@
                 self.log_change(request, new_object, change_message)
                 return self.response_change(request, new_object)
         else:
-            form = ModelForm(instance=obj)
+            if isinstance(ModelForm, ModelFormMetaclass):
+                form = ModelForm(instance=obj)
+            else:
+                form = ModelForm
             for FormSet in self.get_formsets(request, obj):
                 formset = FormSet(instance=obj)
                 formsets.append(formset)
