2016-09-26 3 views
0

Ich habe ein benutzerdefiniertes Formular erstellt und müssen sowohl die clean_field() Methode und clean() Methode überschreiben. Hier ist mein Code:django benutzerdefiniertes Formular sauber() Erhöhung Fehler von clean_field()

class MyForm(forms.Form): 
    username=forms.RegexField(regex=r'^1[34578]\d{9}$') 
    code = forms.RegexField(regex=r'^\d{4}$') 

    def clean_username(self): 
     u = User.objects.filter(username=username) 
     if u: 
      raise forms.ValidationError('username already exist') 
     return username 

    def clean(self): 
     cleaned_data = super(MyForm, self).clean() 
     # How can I raise the field error here? 

Wenn ich diese Form zweimal speichern, und der Benutzername wird bereits vorhanden in der zweiten Zeit, die clean_username Methode einen Fehler erhöht jedoch die clean() Verfahren noch ohne Unterbrechung laufen.

Also meine Frage ist, wie kann ich anrufen clean() stoppen, wenn Fehler bereits durch cleaned_xxx erhöhen, falls dies nicht möglich ist, wie kann ich dann den Fehler wieder angehoben, die durch clean_xxxx() in clean() Verfahren angehoben?

Antwort

1

In Ihrer clean Methode können Sie überprüfen, ob username im cleaned_data Wörterbuch ist.

Sie brauchen wahrscheinlich die else-Anweisung nicht. Der Benutzer wird den Fehler von der clean_username Methode sehen, so dass Sie keine andere erstellen müssen.

+0

danke für Ihre Zeit, wirklich zu schätzen für Ihre Antwort. – Enix

Verwandte Themen