2017-09-18 4 views
0

J'ai un ModelForm Django où je définis certains attributs de formulaire dans la méthode __init__().Définir l'attribut de tous les champs dans Django ModelForm dans la méthode init

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 

Est-il loin pour définir les attributs de tous les champs inclus dans le formulaire sans écrire self.fields pour chacun individuellement?

Répondre

3

self.fields est un dict normal, vous pouvez juste itérer sur ses valeurs:

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