Django ModelForm nicht sauber aufrufen

9

Ich führe eine grundlegende Django ModelForm-Funktion zum Erstellen / Validieren / Speichern durch. Meine benutzerdefinierten Clean-Methoden werden nicht aufgerufen, wenn is_valid () aufgerufen wird, wenn der Code unter dem Eclipse-Debugger ausgeführt wird, und ich setze nach der Formularerstellung und dem Aufruf von is_valid () einen Haltepunkt.

Ich habe den Django-Basiscode mehrere Male verfolgt und es scheint, dass das Fehlerwörterbuch in der ModelForm-Klasse niemals auf None gesetzt ist, was die Validierung auslöst. Ich vermute, dass dies auf eine Interaktion mit dem Debugger zurückzuführen ist, der auf das _errors-Attribut von ModelForm zugreift, um im Variablenfenster angezeigt zu werden.

Wenn ich alle Haltepunkte entferne und den Code auf natürliche Weise fließen lasse, kann ich beweisen, dass der benutzerdefinierte Bereinigungscode ausgeführt wird, indem er Druckanweisungen ausgibt.

Ist das ein Fehler im Django ModelForm-Design, ein Eclipse-Problem, oder breche ich den falschen Baum an?

models.py

%Vor%

forms.py

%Vor%

Mein Testkabel:

%Vor%     
Michael Bartz 30.11.2012, 13:46
quelle

3 Antworten

1

Was ist, wenn Sie versuchen:

%Vor%     
Brandon 30.11.2012 18:47
quelle
0

Ich habe die "Antwort" gefunden, die eine Art von Nicht-Antwort ist. Der genaue Anwendungsfall war der Empfang einer CSV-Datei von einem Kunden. Nach der Überprüfung der tatsächlichen Datei des Kunden wurden die Datenfelder mit Leerzeichen aufgefüllt - viele Leerzeichen. Ich trimmte die Eingabe und schob das getrimmte Wörterbuch in das Formular und alles funktionierte. Erklärt immer noch nicht, warum Eclipse daran erstickt.

    
Michael Bartz 26.12.2012 14:01
quelle
0

Ich hatte das gleiche Problem und versuchte ein wenig tiefer zu graben und das Framework zu debuggen.

Es gibt wahrscheinlich einen Unterschied zwischen regulären Formularen und Modellformularen, was dazu führt, dass dies nicht funktioniert, aber dieser Hack (overriding is_valid() anstelle von clean(...) ) hat für mich funktioniert:

%Vor%     
Nimo 04.02.2013 18:15
quelle

Tags und Links