Skip to content

Commit 8da76ff

Browse files
committed
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
1 parent 7aeb37d commit 8da76ff

File tree

2 files changed

+8
-1
lines changed

2 files changed

+8
-1
lines changed

django/forms/models.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -236,6 +236,8 @@ def __init__(self, data=None, files=None, auto_id='id_%s', prefix=None,
236236
empty_permitted=False, instance=None):
237237
opts = self._meta
238238
if instance is None:
239+
if opts.model is None:
240+
raise ValueError('ModelForm has no model class specified.')
239241
# if we didn't get an instance, instantiate a new one
240242
self.instance = opts.model()
241243
object_data = {}

tests/regressiontests/model_forms_regress/tests.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,5 +145,10 @@ def test_string_message(self):
145145
data = {'name': 'anonymous'}
146146
form = RealPersonForm(data)
147147
self.assertEqual(form.is_valid(), False)
148-
self.assertEqual(form.errors['__all__'], ['Please specify a real name.'])
148+
self.assertEqual(form.errors['__all__'], ['Please specify a real name.'])
149149

150+
class ModelClassTests(TestCase):
151+
def test_no_model_class(self):
152+
class NoModelModelForm(forms.ModelForm):
153+
pass
154+
self.assertRaises(ValueError, NoModelModelForm)

0 commit comments

Comments
 (0)