【问题标题】:web2py SQLFORM.factory defaults not updatingweb2py SQLFORM.factory 默认不更新
【发布时间】:2013-08-14 21:07:00
【问题描述】:

我在一个页面上有一个 SQLFORM.factory,我用来(除其他外)更新表中的特定字段。该字段是我这样制作的下拉表

Field('visibility',requires=IS_IN_SET(['everyone','subscribers','friends','nobody']))

所以 SQLFORM.factory 中的字段看起来是一样的。不同之处在于我希望 SQLFORM.factory 中的默认值是特定表中该字段的当前值。通过设置默认值。我对表中所需的条目进行查询,选择该字段,这将成为我的默认选项。第一次加载时完美。 我在表单接受后进行更新,并且更新正常工作:

if subForm.accepts(request,session,dbio=True):
    if myForm.vars.visible != theDefault:
        db(row).update(visibility = subForm.vars.visibility)

如果您提交页面,则所选选项不是表中该字段的当前值,它始终是之前的那个。如果我查看我的数据库管理员,表格更新得很好,但我无法获取正确的选项来选择我的默认值。如果我的默认设置是“所有人”,然后我选择并提交“朋友”,那么在提交后重新加载页面时选择的仍然是“所有人”如果我然后选择并提交“没人”,刷新后它是“朋友”。

如果有帮助,我会将这个 SQLFORM.factory 所在的视图和 iFrame 显示为更大页面的一部分。

【问题讨论】:

    标签: forms web2py


    【解决方案1】:

    几个小时后,这就是你的做法(有点骇人听闻,但它有效)

    #This is a kludge to get the right default visibility selected
    if request.vars.visible == None:
        visibleDefault = theDefault
    else:
        visibleDefault = request.vars.visible
    
    form = SQLFORM.factory(
           FIELD(Field('visible',requires=IS_IN_SET(['everyone','subscribers','friends','nobody'],zero=None),default=visibleDefault),
           table_name='table')
    
    if form.accepts(request,session,dbio=True):
        if form.vars.visible != theDefault:
            db(row).update(visibility = form.vars.visible)
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-03
      • 2022-07-29
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多