Найти - Пользователи
Полная версия: Flask-WTF IntegerField не работает
Начало » Web » Flask-WTF IntegerField не работает
1
balalay12
Добрый день!
Сделал простую форму для проверки данных
 class SetAdd(FlaskForm):
    date = DateTimeField(validators=[
        DataRequired(),
    ])
    exercise = IntegerField(validators=[
        DataRequired(),
    ])

не срабатывает IntegerField. Передаю буквы и форма ни на что не ругается, но если ничего не передавать, то тогда вылазит ошибка.
Подскажите что не так.
FishHook
balalay12
Передаю буквы и форма ни на что не ругается
Через HTTP вообще можно передать только буквы. Показывайте, как создаете объект формы, что у вас в реквесте.
balalay12
FishHook
Я понимаю насчет строк. Я и хочу чтобы это поле мне вернуло число.
В исходниках вроде как делается приведение строки к числу.

 class IntegerField(Field):
    """
    A text field, except all input is coerced to an integer.  Erroneous input
    is ignored and will not be accepted as a value.
    """
    widget = widgets.TextInput()
    def __init__(self, label=None, validators=None, **kwargs):
        super(IntegerField, self).__init__(label, validators, **kwargs)
    def _value(self):
        if self.raw_data:
            return self.raw_data[0]
        elif self.data is not None:
            return text_type(self.data)
        else:
            return ''
    def process_formdata(self, valuelist):
        if valuelist:
            try:
                self.data = int(valuelist[0])
            except ValueError:
                self.data = None
                raise ValueError(self.gettext('Not a valid integer value'))

Или я ошибаюсь?
sander
balalay12
что б ругалось, нужно делать валидацию
balalay12
В общем вместо
 set_form = SetAdd(data={'date': training['date'], 'exercise': training['exercise']['id']})
сделал так
 set_form = SetAdd(formdata=MultiDict({'date': training['date'], 'exercise': training['exercise']['id']}))
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB