From 14e2b1b065085c1d2d3e94ebaeefe25e12595a00 Mon Sep 17 00:00:00 2001 From: Patrik Sletmo Date: Tue, 11 Dec 2018 20:41:21 +0100 Subject: Fixed #29981 -- Fixed inline formsets with a OnetoOneField primary key that uses to_field. --- django/forms/models.py | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'django/forms') diff --git a/django/forms/models.py b/django/forms/models.py index 7648d97da4..fe8a67ed2b 100644 --- a/django/forms/models.py +++ b/django/forms/models.py @@ -958,8 +958,12 @@ class BaseInlineFormSet(BaseModelFormSet): kwargs = { 'label': getattr(form.fields.get(name), 'label', capfirst(self.fk.verbose_name)) } - if self.fk.remote_field.field_name != self.fk.remote_field.model._meta.pk.name: - kwargs['to_field'] = self.fk.remote_field.field_name + + # The InlineForeignKeyField assumes that the foreign key relation is + # based on the parent model's pk. If this isn't the case, set to_field + # to correctly resolve the initial form value. + if self.fk.remote_field.field_name != self.fk.remote_field.model._meta.pk.name: + kwargs['to_field'] = self.fk.remote_field.field_name # If we're adding a new object, ignore a parent's auto-generated key # as it will be regenerated on the save request. -- cgit v1.3