Сортировка WTForms form.errors dict

Кажется, что словарь forms.errors отсортирован по имени поля, а не по порядку, в котором они объявлены в самой форме.

E.g.

class ProductForm(Form): 
    code = TextField('Code', validators=[Required()]) 
    description = TextField('Description', validators=[Required(), Length(max=100)]) 
    amount = DecimalField('Amount', validators=[Required(), NumberRange(min=0.00, max=1000000.00)]) 
    vat_percentage = DecimalField('VAT %', validators=[Required(), NumberRange(min=0.00, max=100.00)]) 
    inactive_date = DateField('Inactive date', validators=[Optional()]) 

Что создает form.errors, например:

{'amount': ['Amount is required'], 'code': ['Code is invalid.'], 
'description': ['Description is required'], 'vat_percentage': ['VAT % is required']} 

Что я хотел бы сделать, так это распечатать ошибки в том порядке, в котором они упорядочены в форме.

Это возможно?


person Marcel Overdijk    schedule 15.03.2013    source источник


Ответы (1)


Словари по своей сути неупорядочены (в Python). Однако WTForms включает ошибки каждого поля в поле, а также в форму и действительно гарантирует, что поля могут быть пронумерованы в объявленном порядке. Поэтому вместо перечисления form.errors вы можете перебирать form, а затем перебирать каждый field.errors, чтобы упорядочить их:

for field in form:
    for error in field.errors:
        # Display error
person Sean Vieira    schedule 16.03.2013