在Django中获取动态字段的最佳方法

时间:2012-10-02 02:47:07

标签: django html-input

我有一个允许人们创建记录的Django应用程序。一条记录可以包含一个或多个人,默认情况下该表单包含三个字段来捕获一个人的姓名。一个用于名字,一个用于中间名字,一个用于姓氏。当一个人创建记录时,他们可以通过单击加号按钮添加其他人。加号按钮添加另一组三个文本框。他们可以为他们想要添加的人群做到这一点。

一旦他们点击加号按钮,每行旁边会显示一个减号按钮,这样他们就可以删除这些字段。

命名文本字段的最佳方法是什么,以便我可以获取所有文本字段并在应用程序的后端迭代它们?

我想如果我将它们命名为同样的话我会得到一系列名字:

request.POST.getlist('firstname')

但事实并非如此。相反,我从上一个输入字段中获取该名称的值。

任何建议都表示赞赏。

1 个答案:

答案 0 :(得分:0)

我建议你看看formsets,而不是重新发明这个。

https://docs.djangoproject.com/en/dev/topics/forms/formsets/

from django.forms.formsets import formset_factory

FormSet = formset_factory(MyForm, extra=2)
formset = FormSet()
print formset.forms # you will see it is a collection of MyForm objects

您可以通过修改“管理表单”并添加下一个表单来动态添加/删除表单集(您可以复制{{ formset.empty_form }}并将ID修改为第N个表单)并且在线有很多示例该怎么做:

How would you make a dynamic formset in Django?
Dynamically adding a form to a Django formset with Ajax