【问题标题】:Web2Py - How to make field enabled?Web2Py - 如何启用字段?
【发布时间】:2017-02-11 00:41:45
【问题描述】:

我有这个从 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”对象没有“可写”属性

问:如何让特定用户有条件地启用文本框?

【问题讨论】:

    标签: python web2py


    【解决方案1】:

    我不确定你为什么会得到一个 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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-21
      • 1970-01-01
      • 1970-01-01
      • 2016-01-20
      • 1970-01-01
      • 2013-05-11
      • 2014-04-24
      相关资源
      最近更新 更多