烧瓶appbuilder中预填充的只读字段

时间:2019-10-24 13:52:05

标签: flask flask-wtforms flask-appbuilder

我对flask and flask应用程序构建器非常陌生。我有两个我无法用文档解决的问题。

是否有一种方法可以不使用自定义表单来预填充字段?我可以将自定义验证器应用于此字段吗?


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

class MyModelView(ModelView):
    datamodel = SQLAInterface(Mytable)
    base_filters = [['CAP_id', FilterEqualFunction, get_user]] #current user
     validators_columns = {
         'cap_id':[EqualTo(get_user, message='username must match CAP ID')]
     }
    edit_form_extra_fields = {'cap_id': TextField('cap_id',
                                    widget=BS3TextFieldROWidget())} 

我希望用用户名预填CAP_ID。每当用户尝试输入新记录时,都应将cap_id验证为等于cap_id或cap_id是可修改但只读的。

简而言之,

cap_id = g.user.username

错误:完整性错误,可能是唯一约束

[SQL: INSERT INTO dealer (cap_id, field1, field2,) VALUES (?, ?, ?, )]
[parameters: (None, 'd103', 'Dr 106')]

我还尝试了以下(models.py):

class mymodel(Model):
id = Column(Integer, primary_key = True)
cap_id =Column(String(20), nullable = False, default = get_user()) 

我的getuser()是

def get_user():
    return g.user.username

这给我一个错误: 你离题了。我尝试将其与app_contex一起使用,但结果相同。

任何帮助或指示将非常有帮助。谢谢。

0 个答案:

没有答案
相关问题