Kaydet (Commit) cc53d9b3 authored tarafından Claude Paroz's avatar Claude Paroz

Fixed #15877 -- Improved exception when ModelForm has no model class

Thanks theaspect at gmail.com for the report and volrath for the
patch.
üst a05ab448
......@@ -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 = {}
......
......@@ -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
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment