2014-02-17 6 views
6

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.

+0

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

+0

@ 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 –

+1

@ lanzz _Wenn WTForms eine Möglichkeit zum automatischen Umschreiben von Formulardaten hatte ..._. In der Tat hat es. Überprüfe meine Antwort. –

Antwort