在初始化方法中设置Django ModelForm中所有字段的属性
问题描述:
我有一个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为每个单独的一个?
答
self.fields
是正常的字典,你可以遍历它的价值观:
for field in self.fields.values():
field.widget.attrs['class'] = 'class1'
field.required = False