2013-02-14 25 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 
     } 
    }