Commit cc53d9b3 authored by Claude Paroz's avatar Claude Paroz
Browse files

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

Thanks theaspect at gmail.com for the report and volrath for the
patch.
parent a05ab448
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -233,9 +233,9 @@ class BaseModelForm(BaseForm):
                 initial=None, error_class=ErrorList, label_suffix=':',
                 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 instance is None:
            # if we didn't get an instance, instantiate a new one
            self.instance = opts.model()
            object_data = {}
+16 −0
Original line number Diff line number Diff line
@@ -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