Index: django/views/generic/create_update.py
===================================================================
--- django/views/generic/create_update.py	(°æ±¾ 12267)
+++ django/views/generic/create_update.py	(¹¤×÷¸±±¾)
@@ -93,7 +93,7 @@
 
 def create_object(request, model=None, template_name=None,
         template_loader=loader, extra_context=None, post_save_redirect=None,
-        login_required=False, context_processors=None, form_class=None):
+        login_required=False, context_processors=None, form_class=None, initial=None, force_data=None):
     """
     Generic object-creation function.
 
@@ -107,21 +107,30 @@
         return redirect_to_login(request.path)
 
     model, form_class = get_model_and_form_class(model, form_class)
+    model_name = model._meta.object_name.lower()
     if request.method == 'POST':
-        form = form_class(request.POST, request.FILES)
+        if(force_data):
+            data = {}
+            data.update(request.POST)
+            data.update(force_data)
+        else:
+            data = request.POST
+        form = form_class(data, request.FILES, prefix=model_name)
         if form.is_valid():
             new_object = form.save()
-            
-            msg = ugettext("The %(verbose_name)s was created successfully.") %\
+
+            msg = ugettext("The %(verbose_name)s was created successfully.") % \
                                     {"verbose_name": model._meta.verbose_name}
             messages.success(request, msg, fail_silently=True)
             return redirect(post_save_redirect, new_object)
     else:
-        form = form_class()
+        data = dict([(k, request.GET[k]) for k in request.GET.keys()])
+        data.update(initial or {})
+        form = form_class(initial=data, prefix=model_name)
 
     # Create the template, context, response
     if not template_name:
-        template_name = "%s/%s_form.html" % (model._meta.app_label, model._meta.object_name.lower())
+        template_name = "%s/%s_form.html" % (model._meta.app_label, model_name)
     t = template_loader.get_template(template_name)
     c = RequestContext(request, {
         'form': form,
@@ -133,7 +142,7 @@
         slug_field='slug', template_name=None, template_loader=loader,
         extra_context=None, post_save_redirect=None, login_required=False,
         context_processors=None, template_object_name='object',
-        form_class=None):
+        form_class=None, force_data=None):
     """
     Generic object-update function.
 
@@ -149,21 +158,28 @@
         return redirect_to_login(request.path)
 
     model, form_class = get_model_and_form_class(model, form_class)
+    model_name = model._meta.object_name.lower()
     obj = lookup_object(model, object_id, slug, slug_field)
 
     if request.method == 'POST':
-        form = form_class(request.POST, request.FILES, instance=obj)
+        if(force_data):
+            data = {}
+            data.update(request.POST)
+            data.update(force_data)
+        else:
+            data = request.POST
+        form = form_class(data, request.FILES, instance=obj, prefix=model_name)
         if form.is_valid():
             obj = form.save()
-            msg = ugettext("The %(verbose_name)s was updated successfully.") %\
+            msg = ugettext("The %(verbose_name)s was updated successfully.") % \
                                     {"verbose_name": model._meta.verbose_name}
             messages.success(request, msg, fail_silently=True)
             return redirect(post_save_redirect, obj)
     else:
-        form = form_class(instance=obj)
+        form = form_class(instance=obj, prefix=model_name)
 
     if not template_name:
-        template_name = "%s/%s_form.html" % (model._meta.app_label, model._meta.object_name.lower())
+        template_name = "%s/%s_form.html" % (model._meta.app_label, model_name)
     t = template_loader.get_template(template_name)
     c = RequestContext(request, {
         'form': form,
@@ -198,7 +214,7 @@
 
     if request.method == 'POST':
         obj.delete()
-        msg = ugettext("The %(verbose_name)s was deleted.") %\
+        msg = ugettext("The %(verbose_name)s was deleted.") % \
                                     {"verbose_name": model._meta.verbose_name}
         messages.success(request, msg, fail_silently=True)
         return HttpResponseRedirect(post_delete_redirect)
