在Django中,如何延迟绑定未绑定的表单?

时间:2011-03-10 17:56:27

标签: dynamic django-forms late-binding

我动态生成表单:

form = forms.Form()
form.fields['myname'] = forms.CharField(label=u'My Name')
...

然后显示表单:

buf = '....<form action="." method="POST">...' + form.as_p() + '...'
t = Template(buf)
v = RequestContext(request, {'form': form})
html = t.render(v)
...

我可以通过将第一行更改为

来获取绑定实例
form = forms.Form(request.POST)

在我开始生成动态表单之前。

但是,是否有办法保持动态表单生成代码不变,然后将表单后期绑定到request.POST数据?

由于

1 个答案:

答案 0 :(得分:5)

查看django / forms / forms.py,您可以看到django的工作原理。似乎表单数据保存到form.data。此外,如果数据不是None,则将form.is_bound设置为true。

尝试使用:

form.data = request.POST.copy()
form.is_bound = True