Ich habe ein Dropdown-Feld für die Auswahlliste auf meinem Formular, das mit Daten aus einem Modell (Directors) gefüllt ist. Der Wert dieses Dropdown-Menüs muss nicht gespeichert werden. Es wird nur verwendet, um ein anderes Element des Formulars (ein Dropdown-Menü mit dem Titel "Filme") dynamisch auszulösen. Wenn der Benutzer einen Director auswählt, füllt er die zweite Liste dynamisch mit den Filmen, die an diesen Director angehängt sind.Datenüberprüfung für ein Django-Formularelement überschreiben
Das erste Element der ersten Liste ist "Alle Direktoren". Anstatt die Filmliste zu filtern, werden alle Filme in der zweiten Liste angezeigt, weil Alle Regisseure ausgewählt sind.
Wenn der Benutzer einen bestimmten Director und dann einen Film auswählt, wird das Formular ordnungsgemäß übermittelt. Das Problem ist, dass wenn der Benutzer Alle Regisseure auswählt und dann einen Film auswählt, wenn das Formular abgeschickt wird, es mir sagt, dass meine Wahl für die Direktoren ungültig ist, weil es keine der verfügbaren Möglichkeiten ist. In diesem Fall ist eine verfügbare Auswahl (ich nehme an) eines der vorhandenen Director.Objects in der Datenbank. Aber weil mir der Director egal ist, brauche ich diesen Eintrag nicht, um gültig zu sein. Ich brauche nur Film, um gültig zu sein.
Ich verwende ein ModelForm. Wie kann ich die Datenüberprüfung im Director-Formularfeld deaktivieren oder überschreiben, damit der Fehler ignoriert wird, den das Feld generiert?
'super (MyForm, self) .clean()' wird die standardmäßige modellbasierte Validierung noch aktiv sein? – andi
Ja. Bevor Sie die clean-Methode des Formulars erreichen, wurden die Feldvalidatoren bereits ausgeführt. Sie können prüfen, ob sie im Attribut "errors" des Formulars Fehler verursacht haben. (Django 1.8) –