如何访问动态创建的字段以在Django Forms中获取已清理的数据?

时间:2017-03-16 23:14:36

标签: django django-models django-forms django-templates

我了解如何使用form.cleaned_data['<field>']获取字段值,但如何访问动态创建的字段?

我的表单中包含以下代码:

class DevicesForm(forms.Form):
    prefix = 'deviceform'
    device_type = forms.ModelMultipleChoiceField(
        queryset = Device.objects.all(), # not optional, use .all() if unsure
        widget  = forms.CheckboxSelectMultiple,
    )

    def __init__(self, *args, **kwargs):
        super(DevicesForm, self).__init__(*args, **kwargs)
        self.fields['device_type'].empty_label = None
        for i in Device.objects.all():
            self.fields["%s build:" % i] = forms.CharField()

如何在POST后访问用户在Charfield()中输入的数据?

1 个答案:

答案 0 :(得分:0)

正如您在问题中所说,您可以从表单cleaned_data获取值。

if form.is_valid():
    for i in Device.objects.all():
        print form.cleaned_data["%sbuild" % i]

我建议您不要在字段名称中使用空格或:,我认为这可能会导致您遇到问题。如果要自定义表单的显示方式,请设置标签

self.fields["%sbuild" % i] = forms.CharField(label="%s build" % i)