Browse Source

Fixed #12285. ModelForm raises a more informative error if it doesn't have a model class defined. Thanks, tobias.

git-svn-id: http://code.djangoproject.com/svn/django/trunk@12526 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Joseph Kocherhans 15 năm trước cách đây
mục cha
commit
8da76ffeaa

+ 2 - 0
django/forms/models.py

@@ -236,6 +236,8 @@ class BaseModelForm(BaseForm):
                  empty_permitted=False, instance=None):
         opts = self._meta
         if instance is None:
+            if opts.model is None:
+                raise ValueError('ModelForm has no model class specified.')
             # if we didn't get an instance, instantiate a new one
             self.instance = opts.model()
             object_data = {}

+ 6 - 1
tests/regressiontests/model_forms_regress/tests.py

@@ -145,5 +145,10 @@ class CustomModelFormSaveMethod(TestCase):
         data = {'name': 'anonymous'}
         form = RealPersonForm(data)
         self.assertEqual(form.is_valid(), False)
-        self.assertEqual(form.errors['__all__'], ['Please specify a real name.']) 
+        self.assertEqual(form.errors['__all__'], ['Please specify a real name.'])
 
+class ModelClassTests(TestCase):
+    def test_no_model_class(self):
+        class NoModelModelForm(forms.ModelForm):
+            pass
+        self.assertRaises(ValueError, NoModelModelForm)