2 Stimmen

Django form.cleaned_data in einem Null-Modellfeld speichern?

Ich habe ein Django-Modell, das ein int-Feld (mit null=True, leer=True) hat. Nun, wenn ich ein Formular vom Benutzer einreichen, weise ich es wie folgt:

my_model.width= form.cleaned_data['width']

Manchmal erhalte ich jedoch eine Fehlermeldung:

ValueError: invalid literal for int() with base 10: ''

Ich war wandernd, wenn es die leere ('') Zeichenfolge Wert, der das Feld zugewiesen wird? Weil mein Verständnis war das Modell wird leere Zeichenfolge als null/leer behandeln?

Für jede Hilfe in dieser Angelegenheit wären wir dankbar. Danke!

5voto

Ferdinand Beyer Punkte 61121

Nein, das tut es nicht. Wenn Sie NULL zuweisen wollen, verwenden Sie Pythons None . Andernfalls wird Django versuchen, eine Zahl aus der Zeichenkette zu parsen, was bei einer leeren Zeichenkette fehlschlägt.

Sie können die or Konstrukt zu erreichen:

my_model.width = form.cleaned_data['width'] or None

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X