mirror of
https://github.com/django/django.git
synced 2025-10-25 22:56:12 +00:00
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
This commit is contained in:
@@ -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]
|
||||
|
||||
Reference in New Issue
Block a user