2017-09-18 54 views
0

我有一个Django ModelForm,其中我使用__init__()方法设置了某些表单属性。在初始化方法中设置Django ModelForm中所有字段的属性

class MyForm(forms.ModelForm): 

    class Meta: 
     model = MyModel 
     exclude = ['datecreated', 'datemodified'] 

    def __init__(self, *args, **kwargs): 
     super(MyForm, self).__init__(*args, **kwargs) 
     self.fields['field1'].widget.attrs['class'] = 'class1' 
     self.fields['field2'].widget.attrs['class'] = 'class1' 
     self.fields['field3'].widget.attrs['class'] = 'class1' 
     # override Google Chrome field error issues making form unfocusable 
     self.fields['field1'].required = False 
     self.fields['field2'].required = False 
     self.fields['field3'].required = False 

有没有去设置输出的形式各个领域的属性,而无需编写self.fields为每个单独的一个?

回答

3

self.fields是正常的字典,你可以遍历它的价值观:

for field in self.fields.values(): 
    field.widget.attrs['class'] = 'class1' 
    field.required = False