@zedzew

В чем проблема TypeError: object of type 'int' has no len()?

forms.py
class MoneyMarketForm(Form):
    want = SelectField('State', choices=[('b', 'buy'), ('s', 'sell')])
    currency = SelectField('curency', choices=[('u','USD'),('e','EUR'),('r','RUB')])
    total = IntegerField('total', [validators.required(),validators.Length(0, 10000000)])
    course = IntegerField('course', [validators.required('Please enter your course'), validators.Length(0, 10000)])
    phone = IntegerField('phone', [validators.required(), validators.NumberRange(min=0, max=10)])
    city = SelectField('city' , choices=[('c1','city1'),('c2','city2'),('c3','city3'), ('c4', 'city4')])
    area = StringField('area', [validators.required(), validators.Length(max=200)])
    comment = StringField('cooment', [validators.required(), validators.Length(max=350)])
    relevant = IntegerField('relevant',[validators.required(), validators.Length(max=200)])#?
    #submint = SubmitField('Send')
    pub_date = DateTimeField('Posted Date (mm/dd/yyyy)', validators=[Required()], format='%m/%d/%Y')
  • Вопрос задан
  • 7355 просмотров
Решения вопроса 1
Deerenaros
@Deerenaros
Программист, математик, задрот и даже чуть инженер
total = IntegerField('total', [validators.required(),validators.Length(0, 10000000)])
course = IntegerField('course', [validators.required('Please enter your course'), validators.Length(0, 10000)])
#...
relevant = IntegerField('relevant',[validators.required(), validators.Length(max=200)])#?

Зря добавляем валидатор. Как бэ длины у int нету, вот он и не может это переварить.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
1. Как уже было указано, для номера телефона следует использовать строку. Иначе рано или поздно вам придётся использовать знак + или, скажем, номер, начинающийся с 0 - и приехали.
2. Приложение django-localflavor включает уже готовое поле PhoneField.
Ответ написан
@zedzew Автор вопроса
phone = StringField('phone', validators = [validators.required(), Regexp('^\+?[0-9]{3}-?[0-9]{6,12}$')])
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы