Django表单集验证,即使有太多

2024-05-18 15:19:56 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个表单集,我想有一些任意数量的形式。下面是formset类。你知道吗

class ChartDatasetForm(forms.Form):
    """Giving the form a dataset, meant to be repeated with formsets"""

    data_label = forms.CharField(label="Data Label", max_length=100)
    dataset = forms.CharField(label="Data", max_length=1000)


ChartDatasetFormset = formset_factory(
    ChartDatasetForm, min_num=1, validate_min=True, max_num=1000, validate_max=True)

然后我做了一些这样的测试。。。你知道吗

class FormTests(TestCase):
    """Testing that the forms work as expected"""

    def setUp(self):
        """Setting up data for forms"""

        self.dataset = {
            'form-TOTAL_FORMS': 2,
            'form-INITIAL_FORMS': 0,
            'form-MIN_NUM_FORMS': 1,
            'form-MAX_NUM_FORMS': 1000,
            'form-0-data_label': '',
            'form-0-dataset': '',
            'form-1-data_label': '',
            'form-1-dataset': '',
        }

    def test_chart_dataset_validates_with_2_sets(self):
        """Testing that the form validates when there are two datasets"""
        for n in range(2):
            self.dataset['form-%s-data_label' % n] = 'the labels'
            self.dataset['form-%s-dataset' % n] = '1, 2'
        form = ChartDatasetFormset(self.dataset)
        self.assertTrue(form.is_valid())

    def test_chart_dataset_validates_with_3000_sets(self):
        """Running up to the max amount of forms to see if it validates"""
        for n in range(3000):
            self.dataset['form-%s-data_label' % n] = 'the labels'
            self.dataset['form-%s-dataset' % n] = '1, 2'
        form = ChartDatasetFormset(self.dataset)
        form.clean()
        self.assertTrue(form.is_valid())

如您所见,即使我将max_num设置为1000,当有3000个表单时,图表仍在验证。为什么会这样?你知道吗


Tags: thetoselfformdatadefwithforms
1条回答
网友
1楼 · 发布于 2024-05-18 15:19:56

尝试改变

'form-TOTAL_FORMS': 2

到>;1000,我认为测试是针对这个属性而不是实际数据进行的

'form-TOTAL_FORMS': 1003,


Traceback (most recent call last):
File "/home/bobby/Documents/code/python/hello/try/tests.py", line 38, in test_chart_dataset_validates_with_3000_sets
self.assertTrue(form.is_valid())
AssertionError: False is not true

相关问题 更多 >

    热门问题