diff options
Diffstat (limited to 'tests/inline_formsets/tests.py')
| -rw-r--r-- | tests/inline_formsets/tests.py | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/tests/inline_formsets/tests.py b/tests/inline_formsets/tests.py index 1ae9b3f760..0fe9766dc6 100644 --- a/tests/inline_formsets/tests.py +++ b/tests/inline_formsets/tests.py @@ -215,3 +215,38 @@ class InlineFormsetFactoryTest(TestCase): ) formset = PoemFormSet(None, instance=poet) formset.forms # Trigger form instantiation to run the assert above. + + +class InlineFormsetConstraintsValidationTests(TestCase): + def test_constraint_refs_inline_foreignkey_field(self): + """ + Constraints that reference an InlineForeignKeyField should not be + skipped from validation (#35676). + """ + ChildFormSet = inlineformset_factory( + Parent, + Child, + fk_name="mother", + fields="__all__", + extra=1, + ) + father = Parent.objects.create(name="James") + school = School.objects.create(name="Hogwarts") + mother = Parent.objects.create(name="Lily") + Child.objects.create(name="Harry", father=father, mother=mother, school=school) + data = { + "mothers_children-TOTAL_FORMS": "1", + "mothers_children-INITIAL_FORMS": "0", + "mothers_children-MIN_NUM_FORMS": "0", + "mothers_children-MAX_NUM_FORMS": "1000", + "mothers_children-0-id": "", + "mothers_children-0-father": str(father.pk), + "mothers_children-0-school": str(school.pk), + "mothers_children-0-name": "Mary", + } + formset = ChildFormSet(instance=mother, data=data, queryset=None) + self.assertFalse(formset.is_valid()) + self.assertEqual( + formset.errors, + [{"__all__": ["Constraint “unique_parents” is violated."]}], + ) |
