django required =真不行

时间:2015-11-14 21:24:19

标签: python django django-forms

我有这个非常简单的形式,我希望唯一的字段不能为空。 所以在doc中,required = True就是答案:

class AjouterGroupe(forms.Form):
    nom = forms.CharField(required=True, label="", max_length=30, widget=forms.TextInput(attrs={'placeholder': 'Nom', 'class':'form-control input-perso'}))

这是我的一些观点:

Formset = formset_factory(data.form(table, 1), extra=nbajout)
        if request.method == 'POST' and first:

            formset = Formset(request.POST, request.FILES)
            if formset.is_valid():
                nbajout = 0  
                envoi = True

                for form in formset:
                    print(form.is_valid())
                    print(form)
                    form.save()

            form = nbAjout()

        else:
            formset = Formset() 

在特定情况下,data.form(table,1)= AjouterGroupe。

但主要问题是当我用空字段验证时,form.is_valid()为True:/

Variable                    Value

csrfmiddlewaretoken     'uw1fFj9toTU3o3Il3lFW0yvt4OS31XUn'

form-INITIAL_FORMS    '0'

form-MAX_NUM_FORMS    '1000'

form-TOTAL_FORMS     '1'

form-MIN_NUM_FORMS    '0'

form-0-nom            ''

1 个答案:

答案 0 :(得分:2)

这是因为Formsets允许空值。如果未输入任何内容,则将其视为不需要添加的表单。

单独尝试使用您的表单(不是表单集的一部分):在那里,您的required=True将正常工作。此外,如果您尝试使用包含两个字段的模型(均设置为required=True),您将看到如果只填充一个字段则会引发错误。

您应该可以使用formset_factorymin_num=<number>, validate_min=True, extra=1参数来强制进行验证。

另见Django formset doesn't validate