在过去的 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()
