为什么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})
在模板中
这些代码将创建一个表单集合,其中包含 3 个 MyForm 的实例,并允许用户添加 1 个额外的表单。