Django:使用django表单创建HTML输入数组

Bra*_*ant 12 python django django-forms

我试图自动创建这样的东西:

<input type='text' name='asdf[]' />
<input type='text' name='asdf[]' />
<input type='text' name='asdf[]' />
Run Code Online (Sandbox Code Playgroud)

通过循环范围内的范围.我一直在尝试这样的事情,还有其他一些变化:

# in a model class
for i in range(1, prim+1):
    self.fields['asdf'] = forms.CharField(label=i)

# in the template
<form action='#' method='post'>
    {{form.as_p}}
</form>
Run Code Online (Sandbox Code Playgroud)

但我没有运气.

如何自动化输入数组?

**编辑**为了澄清,最终我需要能够访问模板中的字段,如下所示:

{% for input in form.fields.asdf %}
{{input}}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)

那将有希望得到我上面显示的原始输入列表...

Dan*_*een 9

Jacob Kaplan-Moss(Django的合着者)最近发表了一篇关于处理动态表单的精彩文章,它应该以一种优先的方式解决你的问题:http: //jacobian.org/writing/dynamic-form-generation/

他使用的方法与Felix建议的方法相同,但值得阅读整篇文章以更好地掌握这个概念.

使用这种asdf[]技术是草率的,因为那时你必须处理订购.这也不是标准做法.

编辑:

要处理需要检测何时触及这些动态字段的情况:

{% for input in form.fields %}
    {% ifequal input.label 'asdf' %}
        {{ forloop.counter }}: {{input}}<br />
    {% endifequal %}
{% endfor %}
Run Code Online (Sandbox Code Playgroud)


Bra*_*ant 2

看起来我可以通过将表单分解为多个表单集来完成我需要做的事情......

http://docs.djangoproject.com/en/dev/topics/forms/formsets/#topics-forms-formsets

然后,我应该能够从模板中单独访问每个表单集,将它们全部包装成一个