Web2Py - 如何启用字段?

时间:2017-02-11 00:41:46

标签: python web2py

我有这个表单是从 SQLFORM 方法构建的,

flow_step_forms[step.name] = SQLFORM(db.approval_flows_progress_steps,
                                        record=thisstep.id if thisstep is not None else None,
                                        readonly=not __userCanPerformStep(step) or flow_completed)
approval_flows_progress_steps 的数据库如下

db.define_table('approval_flows_progress_steps', 
    Field('flow_progress', 'reference approval_flows_progress'),
    Field('flow_step', 'reference approval_flows_steps'),
    Field('completed', 'boolean'),
    Field('completed_on', 'datetime'),
    Field('completed_by', 'reference auth_user'),
    Field('notes', 'text', writable = True), 
    auth.signature
    )

字段 notes 会呈现为文本框。

在我分配SQLFORM后,有这样的代码:

if __userCanPerformStep(step) and not flow_completed:
   flow_step_forms[step.name].element('textarea')['_rows'] = 5

我想我可以像here一样引用数据库的属性,但是我收到以下错误: 'NoneType'对象没有属性'可写'

问:如何为某些用户有条件地启用文本框?

1 个答案:

答案 0 :(得分:0)

我不确定你为什么会得到一个NoneType。但是为了使textarea只读,你可以这样做:

if __userCanPerformStep(step) and not flow_completed:
    flow_step_forms[step.name].element('textarea')['_readonly'] = True
else:
    flow_step_forms[step.name].element('textarea')['_readonly'] = False

如果您的NoneType问题仅在未授权用户时发生。您可以使用Try / Except块捕获它。说除了NoneType:_readonly = True。