Ответ 1
Вы ищете валидатор Optional
.
start = DateField('Start Date', format='%m/%d/%Y', validators=(validators.Optional(),))
Мне нужен параметр DateField, который является необязательным, но я получил ошибку "Недействительное значение даты", если оставить его пустым
Я добавляю несколько журналов в исходный код wtforms и обнаруживаю formdata.getlist(self.name) возвращает [u ''] для этого DateField
Код моей формы:
from wtforms import BooleanField, TextField, TextAreaField, PasswordField, validators, HiddenField, DateField, SelectField
from flask_wtf import Form
class EmployeeForm(Form):
id = HiddenField('id')
title = TextField('Title')
start = DateField('Start Date', format='%m/%d/%Y')
Вы ищете валидатор Optional
.
start = DateField('Start Date', format='%m/%d/%Y', validators=(validators.Optional(),))
Довольно старая тема, но кто-то может столкнуться с той же проблемой, поэтому я предложу свой возможный ответ на этот вопрос. Добавление validators.Optional()
здесь не помогает, потому что поле помечено как ошибка ранее на этапе обработки.
Вы можете исправить поведение процессора следующим образом:
class NullableDateField(DateField):
"""Native WTForms DateField throws error for empty dates.
Let fix this so that we could have DateField nullable."""
def process_formdata(self, valuelist):
if valuelist:
date_str = ' '.join(valuelist).strip()
if date_str == '':
self.data = None
return
try:
self.data = datetime.datetime.strptime(date_str, self.format).date()
except ValueError:
self.data = None
raise ValueError(self.gettext('Not a valid date value'))