如何程序matically设置forms.CharField文本?
基本上,我想创建一个动态表单,并尝试通过一个POST请求来改变一个字符字段的值。简单来说,我在我的表单中有以下这个字段:
choice = forms.CharField(max_length=50)
在表单的初始化部分,我有这样的代码:
for key, value in request.post.items():
if key == 'choice' and value != '':
self.fields['choice'] = value
显然这样是行不通的,因为我把一个字符串(值)赋给了一个字符字段(选择)。如果有任何想法,我会非常感激。
2 个回答
3
这要看你说的“字段的值”是什么意思。
如果你想改变表单最开始显示的内容,你需要传递一个initial
字典,里面的键要和字段名对应:
self.initial['choice'] = 'myvalue'
如果你想改变传入验证的数据,然后再传给cleaned_data
,你需要修改data
参数:
self.data['choice'] = 'myvalue'
1
你是在找类似于这个链接的内容吗:http://jacobian.org/writing/dynamic-form-generation/?
在这个例子中,它通过初始化添加了X个字符输入框。
for i, question in enumerate(extra):
self.fields['custom_%s' % i] = forms.CharField(label=question)
应该可以扩展以支持不同的表单字段。