将Django表单集呈现为数组

将Django表单集呈现为数组,django,forms,django-forms,nested-forms,formsets,Django,Forms,Django Forms,Nested Forms,Formsets,我有一个模型,我需要创建包含多个实例的表单。更具体地说:我需要在常规表单中呈现ModelForm,在它的字段名旁边用方括号括起来。在magicworld中类似这样的内容: forms.py class ManForm(ModelForm): class Meta: model = Man fields = ['name', 'age'] class PeopleForm(forms.Form): # modelless form peop

我有一个模型,我需要创建包含多个实例的表单。更具体地说:我需要在常规表单中呈现ModelForm,在它的字段名旁边用方括号括起来。在magicworld中类似这样的内容:

forms.py

class ManForm(ModelForm):
    class Meta:
        model = Man
        fields = ['name', 'age']

class PeopleForm(forms.Form):
    # modelless form
    people = ??? # array of ManForm instances or something
form.html

<form action="/people/create/">
    {{ form }}
</form>

{{form}}
输出

<form action="/people/create/">
    <input type="text" name="name[0]"/>
    <input type="text" name="age[0]"/>
</form>


说实话,我根本不知道如何处理这个问题。我尝试了
modelformset\u factory
,但我得到的只是

正如评论中所讨论的,您需要一个表单集

def create_people(request):
    PeopleFormSet = modelformset_factory(Man, form=ManForm)
    if request.method == 'POST':
        formset = PeopleFormSet(request.POST)
        if formset.is_valid():
            for form in formset:
                ... do something with individual form
    else:
        formset = PeopleFormSet()
    return render(request, template_name, {'formset': formset}

有关在基于函数的视图中使用表单集的信息,请参见@Daniel Roseman的回答或阅读


对于基于类的视图,此视图没有内置的泛型视图。据报道,他们决定让第三方软件包来处理这个问题。你可以使用它。

你能解释一下为什么你认为你需要那个特定的格式,而不是Django formset使用的格式吗?我需要在
view.py
中迭代每个人,然后执行特定的任务是的,这就是formset所做的。那么,为什么不能使用一个呢?似乎我不知道如何在view中迭代表单集,我不知道这个请求。POST以这种方式解析表单集。谢谢