summaryrefslogtreecommitdiff
path: root/tests/regressiontests/model_formsets_regress
diff options
context:
space:
mode:
authorTim Graham <timograham@gmail.com>2014-07-08 15:58:14 -0400
committerRamiro Morales <cramm0@gmail.com>2014-07-14 12:38:00 -0300
commitb44519072e8a0ef56a0ae9e6e4a1fb04273eb0eb (patch)
tree12d400501a3141fcc36ed3fe4b753c4dc43419e1 /tests/regressiontests/model_formsets_regress
parentd29f3b9e878c10417d66e1542ac52fe2ca242cf8 (diff)
[1.4.x] Fixed #13794 -- Fixed to_field usage in BaseInlineFormSet.
Thanks sebastien at clarisys.fr for the report and gautier for the patch. Backport of 5e2c4a4bd1 from master
Diffstat (limited to 'tests/regressiontests/model_formsets_regress')
-rw-r--r--tests/regressiontests/model_formsets_regress/models.py9
-rw-r--r--tests/regressiontests/model_formsets_regress/tests.py36
2 files changed, 44 insertions, 1 deletions
diff --git a/tests/regressiontests/model_formsets_regress/models.py b/tests/regressiontests/model_formsets_regress/models.py
index 189ed8072e..2dcf76edac 100644
--- a/tests/regressiontests/model_formsets_regress/models.py
+++ b/tests/regressiontests/model_formsets_regress/models.py
@@ -9,6 +9,15 @@ 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 d058f1d8bc..81a65cd388 100644
--- a/tests/regressiontests/model_formsets_regress/tests.py
+++ b/tests/regressiontests/model_formsets_regress/tests.py
@@ -6,7 +6,10 @@ 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, Restaurant, Manager, Network, Host
+from .models import (
+ User, UserSite, UserProfile, ProfileNetwork, Restaurant, Manager, Network,
+ Host,
+)
class InlineFormsetTests(TestCase):
@@ -153,6 +156,37 @@ 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)