我对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一起使用,但结果相同。
任何帮助或指示将非常有帮助。谢谢。