如何程序matically设置forms.CharField文本?

2 投票
2 回答
4623 浏览
提问于 2025-04-16 11:25

基本上,我想创建一个动态表单,并尝试通过一个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)

应该可以扩展以支持不同的表单字段。

撰写回答