Skip to main content
 首页 » 编程设计

python之Django之表单上的动态字段数

2025年05月04日36youxin

在过去的 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 版本为 1.3.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()