diff --git a/django/views/generic/create_update.py b/django/views/generic/create_update.py
index 5637ca5..6c928a4 100644
--- a/django/views/generic/create_update.py
+++ b/django/views/generic/create_update.py
@@ -10,7 +10,8 @@ from django.core.exceptions import Objec
 
 def create_object(request, model, template_name=None,
         template_loader=loader, extra_context={}, post_save_redirect=None,
-        login_required=False, follow=None, context_processors=None):
+        login_required=False, follow=None, context_processors=None,
+        manipulator = None):
     """
     Generic object-creation function.
 
@@ -21,8 +22,9 @@ def create_object(request, model, templa
     """
     if login_required and request.user.is_anonymous():
         return redirect_to_login(request.path)
-
-    manipulator = model.AddManipulator(follow=follow)
+    
+    if manipulator == None:
+        manipulator = model.AddManipulator(follow=follow)
     if request.POST:
         # If data was POSTed, we're trying to create a new object
         new_data = request.POST.copy()
@@ -73,7 +75,8 @@ def update_object(request, model, object
         slug_field=None, template_name=None, template_loader=loader,
         extra_lookup_kwargs={}, extra_context={}, post_save_redirect=None,
         login_required=False, follow=None, context_processors=None,
-        template_object_name='object'):
+        template_object_name='object',
+        manipulator = None):
     """
     Generic object-update function.
 
@@ -101,7 +104,8 @@ def update_object(request, model, object
     except ObjectDoesNotExist:
         raise Http404, "No %s found for %s" % (model._meta.verbose_name, lookup_kwargs)
 
-    manipulator = model.ChangeManipulator(object.id, follow=follow)
+    if manipulator == None:
+        manipulator = model.ChangeManipulator(object.id, follow=follow)
 
     if request.POST:
         new_data = request.POST.copy()
