summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan Kaskel <dev@ryankaskel.com>2014-02-09 10:53:23 +0000
committerTim Graham <timograham@gmail.com>2014-02-09 06:30:03 -0500
commit75a96f06e916dda9124da9ddf765f3b8d5530914 (patch)
tree772137c65935c1f71296091f24ae416c89d416a1
parent80cd64ee17191ffb235c5850a8fa60cae96c1b89 (diff)
Fixed #21967: Added check for object in ModelFormMixin.get_form_kwargs.
Thanks lagovas.lagovas at gmail.com for the report.
-rw-r--r--django/views/generic/edit.py3
-rw-r--r--tests/generic_views/test_edit.py8
2 files changed, 9 insertions, 2 deletions
diff --git a/django/views/generic/edit.py b/django/views/generic/edit.py
index 0a8301f0db..84d9eb2fee 100644
--- a/django/views/generic/edit.py
+++ b/django/views/generic/edit.py
@@ -122,7 +122,8 @@ class ModelFormMixin(FormMixin, SingleObjectMixin):
Returns the keyword arguments for instantiating the form.
"""
kwargs = super(ModelFormMixin, self).get_form_kwargs()
- kwargs.update({'instance': self.object})
+ if hasattr(self, 'object'):
+ kwargs.update({'instance': self.object})
return kwargs
def get_success_url(self):
diff --git a/tests/generic_views/test_edit.py b/tests/generic_views/test_edit.py
index be26a14adf..92732c4f5f 100644
--- a/tests/generic_views/test_edit.py
+++ b/tests/generic_views/test_edit.py
@@ -9,7 +9,7 @@ from django import forms
from django.test import TestCase
from django.test.client import RequestFactory
from django.views.generic.base import View
-from django.views.generic.edit import FormMixin, CreateView
+from django.views.generic.edit import FormMixin, ModelFormMixin, CreateView
from . import views
from .models import Artist, Author
@@ -55,6 +55,12 @@ class ModelFormMixinTests(TestCase):
form_class = views.AuthorGetQuerySetFormView().get_form_class()
self.assertEqual(form_class._meta.model, Author)
+ def test_get_form_checks_for_object(self):
+ mixin = ModelFormMixin()
+ mixin.request = RequestFactory().get('/')
+ self.assertEqual({'initial': {}, 'prefix': None},
+ mixin.get_form_kwargs())
+
class CreateViewTests(TestCase):
urls = 'generic_views.urls'