This seems to fix the problem, but I don't think this is a good
solution. Hopefully this patch makes the issue a little clearer though:
Index: django/views/generic/create_update.py
===================================================================
--- django/views/generic/create_update.py (revision 632)
+++ django/views/generic/create_update.py (working copy)
@@ -85,7 +85,7 @@
# Look up the object to be edited
lookup_kwargs = {}
if object_id:
- lookup_kwargs['%s__exact' % mod.Klass._meta.pk.name] =
object_id
+ lookup_kwargs['pk'] = object_id
elif slug and slug_field:
lookup_kwargs['%s__exact' % slug_field] = slug
else:
@@ -96,7 +96,7 @@
except ObjectDoesNotExist:
raise Http404("%s.%s does not exist for %s" % (app_label,
module_name, lookup_kwargs))
- manipulator = mod.ChangeManipulator(object.id)
+ manipulator = mod.ChangeManipulator(getattr(object,
mod.Klass._meta.pk.column))
if request.POST:
new_data = request.POST.copy()
@@ -134,7 +134,7 @@
else:
c[key] = value
response = HttpResponse(t.render(c))
- populate_xheaders(request, response, app_label, module_name,
getattr(object, object._meta.pk.name))
+ populate_xheaders(request, response, app_label, module_name,
getattr(object, object._meta.pk.column))
return response
def delete_object(request, app_label, module_name,
post_delete_redirect,