Search code examples
pythonflaskflask-appbuilder

Flask how to make a field read-only via appbuilder


what do i replace Text Field with, I know i replace field2 with my field that i'm trying to make readonly. im getting :

NameError: name *'TextField' is not defined*

Define/override readonly fields like this, first define a new Readonly field:

from flask_appbuilder.fieldwidgets import BS3TextFieldWidget

class BS3TextFieldROWidget(BS3TextFieldWidget):
    def __call__(self, field, **kwargs):
        kwargs['readonly'] = 'true'
        return super(BS3TextFieldROWidget, self).__call__(field, 
**kwargs)

Next override your field using your new widget:

class ExampleView(ModelView):
    datamodel = SQLAInterface(ExampleModel)
    edit_form_extra_fields = {'field2': TextField('field2',
                                widget=BS3TextFieldROWidget())}

Solution

  • make sure you have it declared in the top of your file

    from wtforms.fields import TextField