2011-07-29 4 views
7

Je souhaite ajouter un champ supplémentaire à ModelForm. Il semble facile, mais je reçois l'erreur suivante:Django: ajout d'un champ à un modèle

Django Version: 1.4 pre-alpha SVN-16573 
Exception Type: TypeError 
Exception Value:  
argument of type 'NoneType' is not iterable 
Exception Location: /usr/local/lib/django-trunk/django/forms/models.py in construct_instance, line 39 
Python Executable: /usr/bin/python 
Python Version: 2.6.6 

Voici le code:

class NodeForm(forms.ModelForm): 
    password2 = forms.CharField(max_length=20, required=True, widget=forms.PasswordInput()) 

    class Meta: 
     model = Node 

    def __init__(self, *args, **kwargs): 
     super(NodeForm, self).__init__(*args, **kwargs) 
     # css classes for fields 
     for v in self.fields: 
      self.fields[v].widget.attrs['class'] = 'text ui-widget-content ui-corner-all' 

    def clean(self): 
     ''' Calls parent clean() and performs additional validation for the password field ''' 
     super(NodeForm, self).clean() 
     password = self.cleaned_data.get('password') 
     password2 = self.cleaned_data.get('password2') 
     # password and password2 must be the same 
     if password != password2: 
      raise forms.ValidationError('I due campi password non corrispondono.') 

je n'étais pas en mesure de le réparer. Qu'est-ce que je fais mal?

+0

Vous utilisez django à partir du tronc (1.4), pouvez-vous ajouter toute trace de la pile (ligne d'erreur dans django: 'si pas f.editable ou isinstance (f, models.AutoField) ou pas f.name dans les data_data'') – christophe31

Répondre

8

Vous devez renvoyer des données nettoyées de méthode clean comme l'indique here qui est:

def clean(self): 
    # perform checks 
    return self.cleaned_data 
+0

J'aurais dû revoir la documentation! Merci. – nemesisdesign

Questions connexes