diff --git a/django/views/generic/edit.py b/django/views/generic/edit.py
index 3cade52..3b4606b 100644
--- a/django/views/generic/edit.py
+++ b/django/views/generic/edit.py
@@ -163,12 +163,26 @@ class BaseCreateView(ModelFormMixin, ProcessFormView):
 
     Using this base class requires subclassing to provide a response mixin.
     """
+
+    default_fields = None
+
+    def get_default_fields(self):
+        """
+        Returns the default keywords for the instance to be created, in case
+        you need to set some fields that not in the form.
+        """
+        return self.default_fields
+
     def get(self, request, *args, **kwargs):
         self.object = None
         return super(BaseCreateView, self).get(request, *args, **kwargs)
 
     def post(self, request, *args, **kwargs):
-        self.object = None
+        default_fields = self.get_default_fields()
+        if default_fields:
+            self.object = self.model(**default_fields)
+        else:
+            self.object = None
         return super(BaseCreateView, self).post(request, *args, **kwargs)
 
 
diff --git a/docs/ref/class-based-views.txt b/docs/ref/class-based-views.txt
index 692417e..2f1012d 100644
--- a/docs/ref/class-based-views.txt
+++ b/docs/ref/class-based-views.txt
@@ -1031,6 +1031,11 @@ CreateView
     A view that displays a form for creating an object, redisplaying the form
     with validation errors (if there are any) and saving the object.
 
+    When used with a form that excludes some of the fields (using `form_class
+    = modelform_factory(model, excludes=('date',))`, for example), the default
+    value for the excluded arguments can be specified using `default_fields` or
+    `get_default_fields`.
+
     :class:`~django.views.generic.edit.BaseCreateView` implements the same
     behavior as :class:`~django.views.generic.edit.CreateView`, but doesn't
     include the :class:`~django.views.generic.base.TemplateResponseMixin`.
@@ -1040,6 +1045,15 @@ CreateView
     * :class:`django.views.generic.edit.ModelFormMixin`
     * :class:`django.views.generic.edit.ProcessFormView`
 
+    .. attribute:: default_fields
+
+        A dictionary containing default attributes for the created instance.
+
+    .. method:: get_default_fields()
+
+        Retrieve default attributes for the created instance. By default,
+        returns :attr:`.default_fields`.
+
 UpdateView
 ~~~~~~~~~~
 .. class:: BaseUpdateView()
diff --git a/tests/regressiontests/generic_views/edit.py b/tests/regressiontests/generic_views/edit.py
index 182615a..5ce1f26 100644
--- a/tests/regressiontests/generic_views/edit.py
+++ b/tests/regressiontests/generic_views/edit.py
@@ -92,6 +92,15 @@ class CreateViewTests(TestCase):
         self.assertEqual(res.status_code, 302)
         self.assertRedirects(res, 'http://testserver/accounts/login/?next=/edit/authors/create/restricted/')
 
+    def test_create_with_default_values(self):
+        res = self.client.post('/edit/authors/create/defaultinstance/',
+                        {'name': 'Randall Munroe'})
+        self.assertEqual(res.status_code, 302)
+        self.assertRedirects(res, 'http://testserver/list/authors/')
+        self.assertQuerysetEqual(Author.objects.all(), ['<Author: Randall Munroe>'])
+        author = Author.objects.get(name='Randall Munroe')
+        self.assertEqual(author.slug, 'default-slug')
+
 class UpdateViewTests(TestCase):
     urls = 'regressiontests.generic_views.urls'
 
diff --git a/tests/regressiontests/generic_views/urls.py b/tests/regressiontests/generic_views/urls.py
index 090ec73..84ee509 100644
--- a/tests/regressiontests/generic_views/urls.py
+++ b/tests/regressiontests/generic_views/urls.py
@@ -71,6 +71,8 @@ urlpatterns = patterns('',
         views.AuthorCreate.as_view()),
     (r'^edit/authors/create/special/$',
         views.SpecializedAuthorCreate.as_view()),
+    (r'^edit/authors/create/defaultinstance/$',
+        views.DefaultInstanceAuthorCreate.as_view()),
 
     (r'^edit/author/(?P<pk>\d+)/update/naive/$',
         views.NaiveAuthorUpdate.as_view()),
diff --git a/tests/regressiontests/generic_views/views.py b/tests/regressiontests/generic_views/views.py
index 5ff9cf0..e60fc8d 100644
--- a/tests/regressiontests/generic_views/views.py
+++ b/tests/regressiontests/generic_views/views.py
@@ -3,6 +3,7 @@ from __future__ import absolute_import
 from django.contrib.auth.decorators import login_required
 from django.core.paginator import Paginator
 from django.core.urlresolvers import reverse
+from django.forms.models import modelform_factory
 from django.utils.decorators import method_decorator
 from django.views import generic
 
@@ -103,6 +104,12 @@ class AuthorCreateRestricted(AuthorCreate):
     post = method_decorator(login_required)(AuthorCreate.post)
 
 
+class DefaultInstanceAuthorCreate(AuthorCreate):
+    form_class = modelform_factory(Author, fields=('name',))
+    def get_default_fields(self):
+        return {'slug': 'default-slug'}
+
+
 class ArtistUpdate(generic.UpdateView):
     model = Artist
 
