繁体   English   中英

在Django中使用formset_factory

[英]Using formset_factory in Django

我是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(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, })    

如何修改上面的代码,以便“ Number_of_lines”用于创建n个“ Line_Name”表单字段。

例如,如果Number_of_lines的值为2,则我再次要求用户输入两行的名称,例如

第1行的名称:

第2行的名称:

从POST数据获得number_of_lines后,可以将该数字作为“额外”参数传递给表单集工厂。

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()
...

提示:您还可以使用max_num参数将行数保持在合理的范围内:

GetLineFormSet = formset_factory(GetLine, extra=number_of_lines, max_num=10)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM