2009-07-13 19 views
0

Ich möchte, dass ein Formular ungültig ist, ohne einen ValidationError in einer der sauberen Methoden des Formulars oder Formularfelds zu erhöhen. Der Grund dafür ist, dass die Form die "Superform" für eine Reihe von "Unterformen" ist, und ich möchte, dass das Superformular ungültig ist, wenn eines seiner Unterformulare ungültig ist. Aber diese Ungültigkeit führt nicht dazu, dass ein ValidationError im Super-Formular ausgelöst wird, und ich möchte in der Tat keinen ValidationError im Super-Formular auslösen, weil ich keine Fehlermeldung in den Fehlerlisten des Super-Formulars erscheinen lassen möchte eine Fehlermeldung in der Superform ist non_field_errors ist meine Hauptmotivation hier.) Ein Weg um dies für mich wäre, sowohl die Super-Formular und seine Unterformen für is_valid in der Ansicht zu überprüfen, aber ich bevorzuge, nur die Super-Form zu überprüfen und zu haben Sein is_valid gibt False zurück, auch wenn seine Felder gültig sind, aber wenn eines oder mehrere seiner Unterformulare False an is_valid zurückgibt. Vielen Dank.Formular ungültig machen, ohne ValidationError in Django zu starten

Antwort

1

Warum überschreiben Sie die is_valid-Methode nicht?

class SuperForm(forms.Form): 
    def is_valid(self): 
    return forms.Form.is_valid(self) and all(form.is_valid() for form in self.sub_forms) 
+0

Ich denke, das ist die richtige Option. Ich war mir der 'all'-Funktion in Python nicht bewusst; Diese Funktion wird meinen Code an mehreren Stellen aufräumen, denke ich. Vielen Dank! –

+0

Wolltest du 'forms.Form.is_valid (self)' nennen? Was ist mit 'super (SuperForm, self) .is_valid()'? –

Verwandte Themen