Я создал специальный валидатор, который проверяет, существует ли пользовательский ввод в базе данных. Теперь я хочу добавить флаг настраиваемого поля, который появляется, если проверка не удалась (без повторного рендеринга html), подобно флагу 'required' в валидаторе InputRequired.
Вот мой валидатор:
class ProjectExists(object):
field_flags = ('project_not_exists', ) # need the custom flag here
def __init__(self, project_code=None, message=None):
self.project_code = project_code
self.message = message
self.conn, self.cur = connect_db()
def __call__(self, form, field):
code = field.data
self.cur.execute("SELECT 1 FROM database WHERE project_code = '{}'".format(code))
code_check = self.cur.fetchall()
if not code_check:
if self.message is None:
self.message = field.gettext('Project code {} does not exists!'.format(code))
raise StopValidation(self.message)
Вот исходный код для валидатора InputRequired для справки:
class InputRequired(object):
field_flags = ('required', )
def __init__(self, message=None):
self.message = message
def __call__(self, form, field):
if not field.raw_data or not field.raw_data[0]:
if self.message is None:
message = field.gettext('This field is required.')
else:
message = self.message
field.errors[:] = []
raise StopValidation(message)
Благодарим Вас за помощь!