我花了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
答案 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()