summaryrefslogtreecommitdiff
path: root/django
diff options
context:
space:
mode:
authorRussell Keith-Magee <russell@keith-magee.com>2009-05-15 12:44:51 +0000
committerRussell Keith-Magee <russell@keith-magee.com>2009-05-15 12:44:51 +0000
commita00be663112bc674f71492717f7bbbb35b922e42 (patch)
tree59244aea94e2926fa8267b69a4ceb0dc0857782d /django
parentbed1418034ec20a308ac8df94ebaf97fd489ea30 (diff)
Fixed #11120 -- Corrected handling of inlines attached to inherited classes, broken by r10756. Thanks to George Song and Michael Strickland for the simultaneous reports.
git-svn-id: http://code.djangoproject.com/svn/django/trunk@10787 bcc190cf-cafb-0310-a4f2-bffc1f526a37
Diffstat (limited to 'django')
-rw-r--r--django/forms/models.py15
1 files changed, 9 insertions, 6 deletions
diff --git a/django/forms/models.py b/django/forms/models.py
index 351234a433..aab870b6a0 100644
--- a/django/forms/models.py
+++ b/django/forms/models.py
@@ -617,7 +617,7 @@ class BaseModelFormSet(BaseFormSet):
# the model instance, and sometimes the PK. Handle either.
pk_value = form.fields[pk_name].clean(raw_pk_value)
pk_value = getattr(pk_value, 'pk', pk_value)
-
+
obj = existing_objects[pk_value]
if self.can_delete:
raw_delete_value = form._raw_value(DELETION_FIELD_NAME)
@@ -742,7 +742,8 @@ class BaseInlineFormSet(BaseModelFormSet):
# Use commit=False so we can assign the parent key afterwards, then
# save the object.
obj = form.save(commit=False)
- setattr(obj, self.fk.get_attname(), getattr(self.instance, self.fk.rel.field_name))
+ pk_value = getattr(self.instance, self.fk.rel.field_name)
+ setattr(obj, self.fk.get_attname(), getattr(pk_value, 'pk', pk_value))
if commit:
obj.save()
# form.save_m2m() can be called via the formset later on if commit=False
@@ -757,10 +758,12 @@ class BaseInlineFormSet(BaseModelFormSet):
else:
# The foreign key field might not be on the form, so we poke at the
# Model field to get the label, since we need that for error messages.
- form.fields[self.fk.name] = InlineForeignKeyField(self.instance,
- to_field=self.fk.rel.field_name,
- label=getattr(form.fields.get(self.fk.name), 'label', capfirst(self.fk.verbose_name))
- )
+ kwargs = {
+ 'label': getattr(form.fields.get(self.fk.name), 'label', capfirst(self.fk.verbose_name))
+ }
+ if self.fk.rel.field_name != self.fk.rel.to._meta.pk.name:
+ kwargs['to_field'] = self.fk.rel.field_name
+ form.fields[self.fk.name] = InlineForeignKeyField(self.instance, **kwargs)
def get_unique_error_message(self, unique_check):
unique_check = [field for field in unique_check if field != self.fk.name]