您的位置:

为什么ValidationError(self.error_messages["too_many_forms"] % {"num": self.max_num},code="too_many_forms",),怎么解决

  发布时间:2023-04-04 11:12:27
报错的原因这是 Django 中 Formset 的错误消息,表明您正在提交的表单数量超过了设定的最大数量。您可以通过在 Formset 的定义中调整 max_num 参数来解决此错误。如何解决你可以在 Formset 的创建时设置 max_num 为更大的值,或者在当前表单被提交时在视图函数中动态地增加 max_num 的值来解决这个问题另外,如果您希望在 Formset 中允许用户添加任意数量的表单,可以通过设置 max_num 为 None 来实现。

报错的原因

这是 Django 中 Formset 的错误消息,表明您正在提交的表单数量超过了设定的最大数量。您可以通过在 Formset 的定义中调整 max_num 参数来解决此错误。

如何解决

你可以在 Formset 的创建时设置 max_num 为更大的值,或者在当前表单被提交时在视图函数中动态地增加 max_num 的值来解决这个问题

另外,如果您希望在 Formset 中允许用户添加任意数量的表单,可以通过设置 max_num 为 None 来实现。

如果是你希望更改表单中限制的最大数量, 可以在forms.py 中更改 formset = forms.formset_factory(form = yourform ,max_num=your_number,extra=number_of_extra_form) 里的参数

还可以在视图函数中使用formset.extra = the_number_of_form_you_want来增加表单数量

使用例子

在 forms.py 中:


from django.forms import formset_factory

class MyForm(forms.Form):
    # your form fields

MyFormSet = formset_factory(MyForm, max_num=3, extra=1)

在 views.py 中:


from .forms import MyFormSet

def my_view(request):
    if request.method == 'POST':
        formset = MyFormSet(request.POST)
        if formset.is_valid():
            # do something
    else:
        formset = MyFormSet()

    return render(request, 'template.html', {'formset': formset})

在模板中


{% csrf_token %} {{ formset.management_form }} {% for form in formset %} {{ form }} {% endfor %}

这些代码将创建一个表单集合,其中包含 3 个 MyForm 的实例,并允许用户添加 1 个额外的表单。