Я очень новичок в колбе и сборщике приложений для колб. У меня есть два вопроса, которые мне не удалось решить с помощью документации.
Есть ли способ сделать поля предварительно заполненными без использования пользовательских форм, и можно ли применить к этому полю настраиваемые валидаторы?
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 vsible, но доступен только для чтения.
В двух словах:
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, но результаты те же.
Любая помощь или указания будут очень полезны. Благодарю.