summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClaude Paroz <claude@2xlibre.net>2013-02-23 18:29:56 +0100
committerClaude Paroz <claude@2xlibre.net>2013-02-23 18:32:29 +0100
commitcc53d9b30bd73c12413c28101d5db9f9f4df517c (patch)
tree6cffa178f7c78444d86ad6bfb34893215ffe0e45
parenta05ab448f7a738d30ee7e8a513a65b6a67e8ea8e (diff)
Fixed #15877 -- Improved exception when ModelForm has no model class
Thanks theaspect at gmail.com for the report and volrath for the patch.
-rw-r--r--django/forms/models.py4
-rw-r--r--tests/modeltests/model_forms/tests.py16
2 files changed, 18 insertions, 2 deletions
diff --git a/django/forms/models.py b/django/forms/models.py
index d545a07488..75d526d173 100644
--- a/django/forms/models.py
+++ b/django/forms/models.py
@@ -233,9 +233,9 @@ class BaseModelForm(BaseForm):
initial=None, error_class=ErrorList, label_suffix=':',
empty_permitted=False, instance=None):
opts = self._meta
+ if opts.model is None:
+ raise ValueError('ModelForm has no model class specified.')
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 = {}
diff --git a/tests/modeltests/model_forms/tests.py b/tests/modeltests/model_forms/tests.py
index fb400375b8..efaf2981e1 100644
--- a/tests/modeltests/model_forms/tests.py
+++ b/tests/modeltests/model_forms/tests.py
@@ -133,6 +133,9 @@ class ShortCategory(forms.ModelForm):
slug = forms.CharField(max_length=5)
url = forms.CharField(max_length=3)
+ class Meta:
+ model = Category
+
class ImprovedArticleForm(forms.ModelForm):
class Meta:
model = ImprovedArticle
@@ -277,6 +280,19 @@ class ModelFormBaseTest(TestCase):
['headline', 'slug', 'pub_date', 'writer', 'article', 'categories', 'status']
)
+ def test_invalid_meta_model(self):
+ class InvalidModelForm(forms.ModelForm):
+ class Meta:
+ pass # no model
+
+ # Can't create new form
+ with self.assertRaises(ValueError):
+ f = InvalidModelForm()
+
+ # Even if you provide a model instance
+ with self.assertRaises(ValueError):
+ f = InvalidModelForm(instance=Category)
+
def test_subcategory_form(self):
class SubCategoryForm(BaseCategoryForm):
""" Subclassing without specifying a Meta on the class will use