@egregors

Как динамически присвоить одно из нескольких значений полю потомка WTForms при инициализации экземпляра класса?

Доброго времени.
# Проект на Flask + WTForms

У меня есть несколько кастомных SelectField'ов и форма, в которой одному и тому же полю, в зависимости от условий необходимо присваивать тот или иной SelectField.

# in view
@app.route('/some/<int:a>/', methods=['POST', 'GET'])
def f(a):
    form = MyForm(a=a)
    return render_template('t.html', form=form)

# in forms
class MyForm(Form):
    next = HiddenField()
    static_field1 = StringField()
    static_field2 = StringField()
    static_field3 = StringField()

    # здесь проблема
    # если a == 1 то необходимо сделать specific_field = CustomSelect1(),
    # но если a == 2, то specific_field = CustomSelect()2

    specific_field = ?


Насколько я понимаю, необходимо перегрузить __init__() MyForm таким образом, что бы в зависимости от принятого в качестве параметра значения, можно быть присвоить полю тот, или иной SelectField

Подскажите пожалуйста, как правильно это реализовать?

Спасибо.
  • Вопрос задан
  • 2370 просмотров
Пригласить эксперта
Ответы на вопрос 2
@bromzh
Drugs-driven development
Такое обычно метаклассами делается.
Ответ написан
@snoopt
Можно в вью добавлять форме необходимые поля:
if a == 1:
    MyForm.static_field1 = CustomSelect1()


Ссылка на документацию WTForms
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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