У меня есть это поле в форме WTForms
name = StringField('Name', validators = [Optional(), Length(max = 100)])
Когда поле отправлено пустым, тогда form.name.data
, как и ожидалось, будет содержать пустую строку.
Есть ли способ заставить его возвращать None
вместо пустой строки? Просто потому, что очень удобно иметь дело с null
в БД вот так update
:
update t
set
name = coalesce(%(name)s, name),
other = coalesce(%(other)s, other)
С приведенным выше кодом мне не нужно проверять, пусто поле или нет, и предпринимать соответствующие действия, будь то в коде Python или в коде SQL. null
с coalesce
решает эту проблему легко.
None
самостоятельно? Например.whatever_database.insert_record(form.name.data or None, form.other.data or None)
- person lanzz   schedule 17.02.2014StringField
. Это нелогично, IMO, так как это означает, что нет способа различить «пользователь не ввел значение для этого поля» и «пользователь отправил пустую строку», которые могут иметь очень разную семантику в приложении (в моем случае это так). ). - person jscn   schedule 25.10.2017