diff --git a/django/views/generic/edit.py b/django/views/generic/edit.py index efdf0ce97c..f7270433c2 100644 --- a/django/views/generic/edit.py +++ b/django/views/generic/edit.py @@ -72,10 +72,7 @@ class ModelFormMixin(FormMixin, SingleObjectMixin): if self.form_class: return self.form_class else: - if self.model is None: - model = self.queryset.model - else: - model = self.model + model = self.get_queryset().model return model_forms.modelform_factory(model) def get_form(self, form_class): diff --git a/tests/regressiontests/generic_views/edit.py b/tests/regressiontests/generic_views/edit.py index 7991ef0d04..c7c422b244 100644 --- a/tests/regressiontests/generic_views/edit.py +++ b/tests/regressiontests/generic_views/edit.py @@ -7,6 +7,10 @@ from django.utils.unittest import expectedFailure from regressiontests.generic_views.models import Artist, Author from regressiontests.generic_views import views +class ModelFormMixinTests(TestCase): + def test_get_form(self): + form_class = views.AuthorGetQuerySetFormView().get_form_class() + self.assertEqual(form_class.Meta.model, Author) class CreateViewTests(TestCase): urls = 'regressiontests.generic_views.urls' diff --git a/tests/regressiontests/generic_views/tests.py b/tests/regressiontests/generic_views/tests.py index 843cabad15..a4010aa7c9 100644 --- a/tests/regressiontests/generic_views/tests.py +++ b/tests/regressiontests/generic_views/tests.py @@ -1,5 +1,5 @@ from regressiontests.generic_views.base import ViewTest, TemplateViewTest, RedirectViewTest from regressiontests.generic_views.dates import ArchiveIndexViewTests, YearArchiveViewTests, MonthArchiveViewTests, WeekArchiveViewTests, DayArchiveViewTests, DateDetailViewTests from regressiontests.generic_views.detail import DetailViewTest -from regressiontests.generic_views.edit import CreateViewTests, UpdateViewTests, DeleteViewTests +from regressiontests.generic_views.edit import ModelFormMixinTests, CreateViewTests, UpdateViewTests, DeleteViewTests from regressiontests.generic_views.list import ListViewTests diff --git a/tests/regressiontests/generic_views/views.py b/tests/regressiontests/generic_views/views.py index eacfb717e2..62cced6aab 100644 --- a/tests/regressiontests/generic_views/views.py +++ b/tests/regressiontests/generic_views/views.py @@ -143,3 +143,7 @@ class BookTodayArchive(BookConfig, generic.TodayArchiveView): class BookDetail(BookConfig, generic.DateDetailView): pass + +class AuthorGetQuerySetFormView(generic.edit.ModelFormMixin): + def get_queryset(self): + return Author.objects.all()