如何以编程方式设置forms.CharField文本?

时间:2011-02-08 05:47:40

标签: python django django-forms

基本上我正在尝试创建某种动态表单,我试图通过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(选择)分配一个字符串(值)。非常感谢任何想法。

2 个答案:

答案 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)

应该可以为不同的表单字段扩展额外的内容。