Python 在Django使用formset_工厂
我是Django的新用户,我使用以下代码生成表单Python 在Django使用formset_工厂,python,django,django-forms,Python,Django,Django Forms,我是Django的新用户,我使用以下代码生成表单 class GetMachine(forms.Form): Machine_Name = forms.CharField(max_length=20) Number_of_lines = forms.IntegerField(max_value=10) class GetLine(forms.Form): Line_name = forms.CharField(max_length=20) def install(r
class GetMachine(forms.Form):
Machine_Name = forms.CharField(max_length=20)
Number_of_lines = forms.IntegerField(max_value=10)
class GetLine(forms.Form):
Line_name = forms.CharField(max_length=20)
def install(request):
if request.method == 'POST':
form = GetMachine(request.POST)
if form.is_valid(): # All validation rules pass
# Process the data in form.cleaned_data
form = GetLine()
return render_to_response('install.html', { 'form': form, })
else:
form = GetMachine() # An unbound form
return render_to_response('install.html', { 'form': form, })
如何修改上述代码,使“行数”用于创建n个“行名”表单字段
例如,如果\u行的数量\u的值为2,我想再次要求用户输入两行的名称,如下所示:
第1行的名称:
第2行的名称:从POST数据中获取行数后,可以将该数字作为“额外”参数传递给表单集工厂
from django.forms.formsets import formset_factory
...
form = GetMachine(request.POST)
if form.is_valid(): # All validation rules pass
number_of_lines = form.cleaned_data['Number_of_lines']
GetLineFormSet = formset_factory(GetLine, extra=number_of_lines)
formset = GetLineFormset()
form = GetLine()
...
Protip:您还可以使用max_num参数将行数保持在合理的限制范围内:
GetLineFormSet = formset_factory(GetLine, extra=number_of_lines, max_num=10)