将Django表单集呈现为数组
我有一个模型,我需要创建包含多个实例的表单。更具体地说:我需要在常规表单中呈现ModelForm,在它的字段名旁边用方括号括起来。在magicworld中类似这样的内容: forms.py将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
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以这种方式解析表单集。谢谢