Django - 表单上的动态字段数

时间:2012-03-03 16:38:00

标签: python django

我花了24小时的时间用力砸墙试图解决这个问题。我已经知道在这个板上至少有10个类似的问题。为什么我还在问?好吧,因为没有解决方案似乎工作:)。这是代码:

class MyAdminForm(forms.ModelForm):   
    some_field = forms.CharField()

    def __init__(self, *args, **kwargs):
        super(MyAdminForm, self).__init__(*args, **kwargs)

        for i in range(0, 10):
            self.fields['file_field_%d' % i] = forms.FileField()

此代码仅呈现some_field,而不是其他内容。它似乎并不在乎我正在添加10个文件字段。 Django ver是1.3.1

1 个答案:

答案 0 :(得分:-1)

在调用基类__init__()之前添加字段对我有用。

class MyAdminForm(forms.ModelForm):   
    some_field = forms.CharField()

    def __init__(self, *args, **kwargs):
        for i in range(0, 10):
            self.fields['file_field_%d' % i] = forms.FileField()

        super(MyAdminForm, self).__init__(*args, **kwargs)

如果在表单的每个实例中不需要可变数量的字段,则仅修改base_fields类属性也应该有用。

class MyAdminForm(forms.ModelForm):   
    some_field = forms.CharField()

for i in range(0, 10):
    MyAdminForm.base_fields['file_field_%d' % i] = forms.FileField()