2013-02-14 26 views

回答

13

如果你谈论的烧瓶联系与SQLAlchemy的模型,而你从sqlamodel.ModelView继承声明一个观点,你可以添加这你的班级定义:

class MyModelView(BaseModelView): 
    column_list = ('name', 'last_name', 'email') 
    form_widget_args = { 
     'email':{ 
      'disabled':True 
     } 
    } 
+9

这可能不是你想要的。我实现了这一点,但注意到被禁用的字段在提交时获得**清除**。当我使用'readonly'时,我得到了预期的行为(值不会改变)。 – Ian 2015-05-15 23:02:15

6

当你渲染场在金贾的模板,只是通过在disabled=true如果WTForms不承认kwarg,它只是传递它是html元素的属性。

<form> 
{{ form.example(disabled=True) }} 
</form> 
7

试试这个:

class DisabledTextField(TextField): 
    def __call__(self, *args, **kwargs): 
    kwargs.setdefault('disabled', True) 
    return super(DisabledTextField, self).__call__(*args, **kwargs) 
8

我没有足够的声望评论@ thkang的答案,这非常接近为我工作的。 disabled属性从POST数据中排除该字段,但使用readonly具有所需的效果。

from wtforms.fields import TextField 

class ReadonlyTextField(TextField): 
    def __call__(self, *args, **kwargs): 
    kwargs.setdefault('readonly', True) 
    return super(ReadonlyTextField, self).__call__(*args, **kwargs) 
+0

有什么办法可以设置它吗? form_widget_args = { “type_values”:{ “只读”:“只读” }} 劳伦斯 – 2015-06-18 05:43:51

+0

,我将指定form_extra_fields为同名的领域你想成为只读的,它将覆盖这一领域。 – pip 2015-06-18 09:39:46

+0

即form_overrides = dict(your_field_name = ReadonlyTextField)或可能form_extra_fields = dict(your_field_name = ReadonlyTextField('Label',...)) – pip 2015-06-18 09:40:44

1

我奇怪的错误,当我试图用disabled文本字段,所以我用readonly代替:

class MyModelView(BaseModelView): 
    column_list = ('name', 'last_name', 'email') 
    form_widget_args = { 
     'email':{ 
      'readonly':True 
     } 
    }