2017-01-17 1 views
1

Я хочу передать метку для поля формы в качестве аргумента для формы __init__. Прямо сейчас я получаю ошибку NameError: name 'self' is not defined.Пропустить метку поля для WTForms __init__

class MyForm(FlaskForm): 
    def __init__(self, label_t, **kw): 
     super(MyForm, self).__init__(**kw) 
     self.label_t = label_t 

    name = StringField(self.label_t, validators=[DataRequired()]) 

f = MyForm("test1", csrf_enabled=False) 

Я также попытался поставить имя переменной в функции инициализации, но я получаю AttributeError: 'UnboundField' object has no attribute '__call__'.

class MyForm(FlaskForm): 
    def __init__(self, label_t, **kw): 
     super(MyForm, self).__init__(**kw) 
     self.label_t = label_t 
     self.name = StringField(self.label_t, validators=[DataRequired()]) 

Как я могу передать метку поля для __init__?

ответ

1

Вы не можете получить доступ к self из атрибута класса, который является причиной для NameError. Если вы хотите установить метку вашего поля на __init__ просто установить атрибут label экземпляра:

class MyForm(FlaskForm): 

    def __init__(self, label_t, **kw): 
     super(MyForm, self).__init__(**kw) 
     self.name.label = label_t 

    name = StringField(validators=[DataRequired()]) 
+0

Спасибо! Имеет смысл :) – squeck

Смежные вопросы