2014-07-09 7 views
0

Je dois être pointé dans la bonne direction. Je 'Crispy Forms' pour rendre un formulaire que j'utilise avec AngularJS. Je souhaite ajouter l'attribut ng-model="NAME" à tous les champs de formulaire par défaut.Django ajoute un attribut à chaque champ par défaut

Je pensais cela pourrait être fait en utilisant un mixin ajouté à ma forme à savoir AngularJSFormMixin:

class ProfileAuthenticationForm(AngularJSFormMixin, AuthenticationForm): 


    def __init__(self, *args, **kwargs): 
     super(ProfileAuthenticationForm, self).__init__(*args, **kwargs) 

     self.helper = FormHelper() 
     self.helper.form_method = 'post' 
     # turn off HTML5 validation 
     self.helper.attrs = {'novalidate': ''} 
     self.helper.form_show_labels = False 

     self.helper.layout = Layout(
      Field('username', placeholder="E-mail", autocomplete='off'), 
      Field('password', placeholder="Password", autocomplete='off'), 
      HTML('<input type="submit" name="Login" ng-click="submit()" css_class="btn btn-primary btn-block" />'), 

     ) 

mais je ne suis pas sûr de ce qu'il faut faire d'ici avec AngularJSFormMixin. Est-il possible d'ajouter automatiquement ng-model="NAME" à tous les champs par défaut?

Répondre

1

Je n'ai jamais travaillé avec des formes croustillantes auparavant, mais c'est ce que j'ai fait dans le formulaire __init__ pour ajouter un attribut ng-model avec une valeur. Ma directive 'get-error-elements' est utilisée pour montrer les erreurs du formulaire à l'utilisateur:

def __init__(self, *args, **kwargs):          
     super(MyForm, self).__init__(*args, **kwargs)      

     for field in self:              

      field.field.widget.attrs.update({'ng-focus': ''})     

      field.field.widget.attrs.update({        
       'ng-model': 'formName.{0}'.format(field.name),    
       'get-error-elements': '',         
      })                
+0

Merci Austin, je peux voir du travail cela fonctionnerait maintenant. – Prometheus

Questions connexes