嘿伙计们,我知道这个问题已经被多次提出,但我还没有完全理解。正如您在下面看到的,我有一个可以动态告知要创建多少行的表单。 如何创建一个“添加行”链接来告诉 View 要创建多少行?我真的很想在不增加网址的情况下做到这一点...
# views.py
def myView(request):
if request.method == "POST":
form = MyForm(request.POST, num_rows=1)
if form.is_valid():
return render_to_response('myform_result.html', context_instance=RequestContext(request))
else:
form = MyForm(num_rows=1)
return render_to_response('myform.html', {'form':form}, context_instance=RequestContext(request))
# forms.py
class MyForm(forms.Form):
def __init__(self, *args, **kwargs):
num_rows = kwargs.pop('num_rows',1)
super(MyForm, self).__init__(*args, **kwargs)
for row in range(0, num_rows):
field = forms.CharField(label="Row")
self.fields[str(row)] = field
# myform.html http://example.com/myform
<form action="." method="POST" accept-charset="utf-8">
<ul>
{% for field in form %}
<li style="margin-top:.25em">
<span class="normal">{{ field.label }}</span>
{{ field }}
<span class="formError">{{ field.errors }}</span>
</li>
{% endfor %}
</ul>
<input type="submit" value="Save">
</form>
<a href="ADD_ANOTHER_ROW?">+ Add Row</a>
最佳答案
当您的表单行数可变时,您需要的是 formset .
关于django - 动态(干净地)向 Django 表单添加字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2942359/