mirror of
https://github.com/django/django.git
synced 2025-11-03 05:13:23 +00:00
Fixed #25987 -- Made inline formset validation respect unique_together with an unsaved parent object.
Thanks Anton Kuzmichev for the report and Tim for the review.
This commit is contained in:
parent
2c125bded1
commit
1a403aa705
3 changed files with 26 additions and 3 deletions
|
|
@ -31,5 +31,8 @@ class Poem(models.Model):
|
|||
poet = models.ForeignKey(Poet, models.CASCADE)
|
||||
name = models.CharField(max_length=100)
|
||||
|
||||
class Meta:
|
||||
unique_together = ('poet', 'name')
|
||||
|
||||
def __str__(self):
|
||||
return self.name
|
||||
|
|
|
|||
|
|
@ -162,3 +162,17 @@ class InlineFormsetFactoryTest(TestCase):
|
|||
PoemFormSet = inlineformset_factory(Poet, Poem, fields="__all__", extra=0)
|
||||
formset = PoemFormSet(None, instance=poet)
|
||||
self.assertEqual(len(formset.forms), 1)
|
||||
|
||||
def test_unsaved_fk_validate_unique(self):
|
||||
poet = Poet(name='unsaved')
|
||||
PoemFormSet = inlineformset_factory(Poet, Poem, fields=['name'])
|
||||
data = {
|
||||
'poem_set-TOTAL_FORMS': '2',
|
||||
'poem_set-INITIAL_FORMS': '0',
|
||||
'poem_set-MAX_NUM_FORMS': '2',
|
||||
'poem_set-0-name': 'Poem',
|
||||
'poem_set-1-name': 'Poem',
|
||||
}
|
||||
formset = PoemFormSet(data, instance=poet)
|
||||
self.assertFalse(formset.is_valid())
|
||||
self.assertEqual(formset.non_form_errors(), ['Please correct the duplicate data for name.'])
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue