1
0
mirror of https://github.com/django/django.git synced 2025-10-23 21:59:11 +00:00

Fixed #22229 -- Added primary key validation to BaseModelFormSet._construct_form().

This commit is contained in:
Jon Dufresne
2017-06-26 15:00:30 -07:00
committed by Tim Graham
parent 988309a1ae
commit d7881d2020
2 changed files with 72 additions and 11 deletions

View File

@@ -1655,6 +1655,50 @@ class ModelFormsetTest(TestCase):
# created.
self.assertQuerysetEqual(Author.objects.all(), ['<Author: Charles>', '<Author: Walt>'])
def test_validation_without_id(self):
AuthorFormSet = modelformset_factory(Author, fields='__all__')
data = {
'form-TOTAL_FORMS': '1',
'form-INITIAL_FORMS': '1',
'form-MAX_NUM_FORMS': '',
'form-0-name': 'Charles',
}
formset = AuthorFormSet(data)
self.assertEqual(
formset.errors,
[{'id': ['This field is required.']}],
)
def test_validation_with_child_model_without_id(self):
BetterAuthorFormSet = modelformset_factory(BetterAuthor, fields='__all__')
data = {
'form-TOTAL_FORMS': '1',
'form-INITIAL_FORMS': '1',
'form-MAX_NUM_FORMS': '',
'form-0-name': 'Charles',
'form-0-write_speed': '10',
}
formset = BetterAuthorFormSet(data)
self.assertEqual(
formset.errors,
[{'author_ptr': ['This field is required.']}],
)
def test_validation_with_invalid_id(self):
AuthorFormSet = modelformset_factory(Author, fields='__all__')
data = {
'form-TOTAL_FORMS': '1',
'form-INITIAL_FORMS': '1',
'form-MAX_NUM_FORMS': '',
'form-0-id': 'abc',
'form-0-name': 'Charles',
}
formset = AuthorFormSet(data)
self.assertEqual(
formset.errors,
[{'id': ['Select a valid choice. That choice is not one of the available choices.']}],
)
def test_validation_with_nonexistent_id(self):
AuthorFormSet = modelformset_factory(Author, fields='__all__')
data = {