From aa9c45c2e425662d980cca82974da0986fdbe406 Mon Sep 17 00:00:00 2001 From: Ramiro Morales Date: Mon, 14 Jul 2014 21:09:38 -0300 Subject: [PATCH] [1.4.x] Revert "Fixed #13794 -- Fixed to_field usage in BaseInlineFormSet." This reverts commit b44519072e8a0ef56a0ae9e6e4a1fb04273eb0eb. stable/1.4.x branch is in security-fixes-only mode. --- django/forms/models.py | 8 ++--- .../model_formsets_regress/models.py | 9 ----- .../model_formsets_regress/tests.py | 36 +------------------ 3 files changed, 3 insertions(+), 50 deletions(-) diff --git a/django/forms/models.py b/django/forms/models.py index c16faae4ab..cd8f027070 100644 --- a/django/forms/models.py +++ b/django/forms/models.py @@ -712,12 +712,8 @@ class BaseInlineFormSet(BaseModelFormSet): # Remove the foreign key from the form's data form.data[form.add_prefix(self.fk.name)] = None - # Set the fk value here so that the form can do its validation. - fk_value = self.instance.pk - if self.fk.rel.field_name != self.fk.rel.to._meta.pk.name: - fk_value = getattr(self.instance, self.fk.rel.field_name) - fk_value = getattr(fk_value, 'pk', fk_value) - setattr(form.instance, self.fk.get_attname(), fk_value) + # Set the fk value here so that the form can do it's validation. + setattr(form.instance, self.fk.get_attname(), self.instance.pk) return form @classmethod diff --git a/tests/regressiontests/model_formsets_regress/models.py b/tests/regressiontests/model_formsets_regress/models.py index 2dcf76edac..189ed8072e 100644 --- a/tests/regressiontests/model_formsets_regress/models.py +++ b/tests/regressiontests/model_formsets_regress/models.py @@ -9,15 +9,6 @@ class UserSite(models.Model): user = models.ForeignKey(User, to_field="username") data = models.IntegerField() -class UserProfile(models.Model): - user = models.ForeignKey(User, unique=True, to_field="username") - about = models.TextField() - -class ProfileNetwork(models.Model): - profile = models.ForeignKey(UserProfile, to_field="user") - network = models.IntegerField() - identifier = models.IntegerField() - class Place(models.Model): name = models.CharField(max_length=50) diff --git a/tests/regressiontests/model_formsets_regress/tests.py b/tests/regressiontests/model_formsets_regress/tests.py index 81a65cd388..d058f1d8bc 100644 --- a/tests/regressiontests/model_formsets_regress/tests.py +++ b/tests/regressiontests/model_formsets_regress/tests.py @@ -6,10 +6,7 @@ from django.forms.util import ErrorDict, ErrorList from django.forms.models import modelform_factory, inlineformset_factory, modelformset_factory, BaseModelFormSet from django.test import TestCase -from .models import ( - User, UserSite, UserProfile, ProfileNetwork, Restaurant, Manager, Network, - Host, -) +from .models import User, UserSite, Restaurant, Manager, Network, Host class InlineFormsetTests(TestCase): @@ -156,37 +153,6 @@ class InlineFormsetTests(TestCase): else: self.fail('Errors found on formset:%s' % form_set.errors) - def test_inline_model_with_to_field(self): - """ - #13794 --- An inline model with a to_field of a formset with instance - has working relations. - """ - FormSet = inlineformset_factory(User, UserSite, exclude=('is_superuser',)) - - user = User.objects.create(username="guido", serial=1337) - UserSite.objects.create(user=user, data=10) - formset = FormSet(instance=user) - - # Testing the inline model's relation - self.assertEqual(formset[0].instance.user_id, "guido") - - def test_inline_model_with_to_field_to_rel(self): - """ - #13794 --- An inline model with a to_field to a related field of a - formset with instance has working relations. - """ - FormSet = inlineformset_factory(UserProfile, ProfileNetwork, exclude=[]) - - user = User.objects.create(username="guido", serial=1337, pk=1) - self.assertEqual(user.pk, 1) - profile = UserProfile.objects.create(user=user, about="about", pk=2) - self.assertEqual(profile.pk, 2) - ProfileNetwork.objects.create(profile=profile, network=10, identifier=10) - formset = FormSet(instance=profile) - - # Testing the inline model's relation - self.assertEqual(formset[0].instance.profile_id, 1) - def test_formset_with_none_instance(self): "A formset with instance=None can be created. Regression for #11872" Form = modelform_factory(User)