Ich habe dieses Feld in der WTForms
Formin statt eine leeren Zeichenfolge Keine von einem Feld Daten Get
name = StringField('Name', validators = [Optional(), Length(max = 100)])
Wenn das Feld leer abgegeben wird dann form.name.data
wird, wie erwartet, eine leere Zeichenfolge enthalten.
Gibt es eine Möglichkeit, None
anstatt einer leeren Zeichenfolge zurückgeben? Es ist nur, weil es sehr bequem ist wie mit null
in der Datenbank zu tun in diesem update
:
update t
set
name = coalesce(%(name)s, name),
other = coalesce(%(other)s, other)
Mit dem obigen Code brauche ich nicht zu überprüfen, ob das Feld leer ist oder nicht und Aktionen entsprechend sein Es ist im Python-Code im SQL-Code aktiviert. Die null
mit der coalesce
löst das einfach.
Ich würde sagen, dass es zweifelhaft ist, da die _actual_ Daten aus dem Browser empfangen wird wirklich eine leere Zeichenfolge für das Feld enthalten. Was ist falsch daran, deine Feldwerte zu überprüfen und leere Strings durch 'None' selbst zu ersetzen? Z.B. 'whatever_database.insert_record (form.name.data oder None, form.other.data oder None)' – lanzz
@ lanzz _Was ist los mit ..._ Nichts ist falsch. Ich denke nur, dass es sauberer ist, diese Logik zu verlassen, wo (IMO) sie hingehört; der Formularprozessor –
@ lanzz _Wenn WTForms eine Möglichkeit zum automatischen Umschreiben von Formulardaten hatte ..._. In der Tat hat es. Überprüfe meine Antwort. –