mirror of
https://github.com/django/django.git
synced 2024-12-22 17:16:24 +00:00
Fixed #29696 -- Prevented BaseModelFormSet.initial_form_count()'s from treating data={} as unbound.
This commit is contained in:
parent
cdc6da395a
commit
ef87b38ef7
@ -570,7 +570,7 @@ class BaseModelFormSet(BaseFormSet):
|
||||
|
||||
def initial_form_count(self):
|
||||
"""Return the number of forms that are required in this FormSet."""
|
||||
if not (self.data or self.files):
|
||||
if not self.is_bound:
|
||||
return len(self.get_queryset())
|
||||
return super().initial_form_count()
|
||||
|
||||
|
@ -4,7 +4,7 @@ from datetime import date
|
||||
from decimal import Decimal
|
||||
|
||||
from django import forms
|
||||
from django.core.exceptions import ImproperlyConfigured
|
||||
from django.core.exceptions import ImproperlyConfigured, ValidationError
|
||||
from django.db import models
|
||||
from django.forms.models import (
|
||||
BaseModelFormSet, _get_foreign_key, inlineformset_factory,
|
||||
@ -1741,6 +1741,12 @@ class ModelFormsetTest(TestCase):
|
||||
[{'id': ['Select a valid choice. That choice is not one of the available choices.']}],
|
||||
)
|
||||
|
||||
def test_initial_form_count_empty_data_raises_validation_error(self):
|
||||
AuthorFormSet = modelformset_factory(Author, fields='__all__')
|
||||
msg = 'ManagementForm data is missing or has been tampered with'
|
||||
with self.assertRaisesMessage(ValidationError, msg):
|
||||
AuthorFormSet({}).initial_form_count()
|
||||
|
||||
|
||||
class TestModelFormsetOverridesTroughFormMeta(TestCase):
|
||||
def test_modelformset_factory_widgets(self):
|
||||
|
Loading…
Reference in New Issue
Block a user