基本上我正在尝试创建某种动态表单,我试图通过post请求更改CharField的值。简单地说,我的表单中有以下字段:
choice = forms.CharField(max_length=50)
在表单的 init 中我有这样的内容:
for key, value in request.post.items():
if key == 'choice' and value != '':
self.fields['choice'] = value
这显然不起作用,因为我正在为CharField(选择)分配一个字符串(值)。非常感谢任何想法。
答案 0 :(得分:3)
这取决于您对该领域的“价值”的含义。
如果您尝试更改最初显示表单时显示的内容,则需要使用与字段名称对应的键传递initial
字典:
self.initial['choice'] = 'myvalue'
如果您尝试更改传递给验证的内容,然后更改为cleaned_data
,则需要更改data
参数:
self.data['choice'] = 'myvalue'
答案 1 :(得分:1)
您是否正在寻找符合http://jacobian.org/writing/dynamic-form-generation/的内容?
在示例中,它通过init
添加了X个字段for i, question in enumerate(extra):
self.fields['custom_%s' % i] = forms.CharField(label=question)
应该可以为不同的表单字段扩展额外的内容。